Re: INSERT ... SELECT problem in Mysql
От | Evil Azrael |
---|---|
Тема | Re: INSERT ... SELECT problem in Mysql |
Дата | |
Msg-id | 798069325.20030705000659@evilazrael.de обсуждение исходный текст |
Ответ на | Re: INSERT ... SELECT problem in Mysql (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: INSERT ... SELECT problem in Mysql
|
Список | pgsql-sql |
Thanx for the fast answer. I already thought something about like this and considered sending the question to the advocacy list instead of the SQL list. I really like their docs since iŽve read about their reasons against Foreign Keys *g* One more point in favor for PostgreSQL :) Christoph Nelles Am Freitag, 4. Juli 2003 um 23:45 schrieben Sie: TL> Evil Azrael <evilazrael@evilazrael.de> writes: >> I have a problem with this part in the text >> ---- >> The target table of the INSERT statement cannot appear in the FROM >> clause of the SELECT part of the query because it's forbidden in >> standard SQL to SELECT from the same table into which you are >> inserting. TL> This is just MySQL's self-serving reading of the spec. What SQL92 TL> actually says is (section 13.8) TL> 1) The following restrictions apply for Intermediate SQL: TL> a) The leaf generally underlying table of T shall not be gen- TL> erally contained in the <query expression> immediately TL> contained in the <insert columns and source> except as the TL> <qualifier> of a <column reference>. TL> SQL99 puts it a little differently: TL> Conformance Rules TL> 1) Without Feature F781, "Self-referencing operations", no leaf TL> generally underlying table of T shall be generally contained in TL> the <query expression> immediately contained in the <insert TL> columns and source> except as the <table or query name> or TL> <correlation name> of a column reference. TL> In other words, the behavior is perfectly standard, it's just not TL> required for minimal SQL implementations to support it. TL> What the standard behavior is is defined by this rule, earlier in the TL> same section: TL> 3) The <query expression> is effectively evaluated before inserting TL> any rows into B. TL> that is, the SELECT doesn't see any rows that are being inserted into TL> the target table during the same command. There would not be any need TL> for that rule if selecting from the same table you're inserting into TL> were flat-out forbidden, as the MySQL docs claim. TL> regards, tom lane -- Mit freundlichen Grüssen Evil Azrael mailto:evilazrael@evilazrael.de
В списке pgsql-sql по дате отправления: