0

MySQL にこの機能がないのはなぜですか?

INSERT INTO abc (a) VALUES ('bla')
ON DUPLICATE KEY
 INSERT INTO ...

これを行うにはストアド プロシージャが必要ですか?

4

1 に答える 1

4

正確にどこに挿入しますか?同じテーブル?主キーがすでに存在するため、それが不可能であることはすでにわかっています。

行を別のテーブルに挿入することについて話している場合、それはまったく別のことであり、単一の挿入ステートメントで行うことはできません。これは、insertステートメントの一般的な考え方が、特定の行を特定のテーブルに入れることだからです。これは通常、「代わりに」タイプのトリガーで実行できます。

insertこの考えは、元の行が既に存在する場合に、単一のステートメントを使用して別の行を挿入しようとしてはならない(主キーの変更など) ことも意味します。その場合、主キーはほぼ間違いなく人工的なものであり、その場合はおそらく自動インクリメント キーが適しています。

背後にある考え方insert ... on duplicate key updateは、その行が既に存在するかどうかに関係なく取得することです。特定の行を特定のテーブルに取得します

于 2012-06-17T05:41:15.050 に答える