MySQL にこの機能がないのはなぜですか?
INSERT INTO abc (a) VALUES ('bla')
ON DUPLICATE KEY
INSERT INTO ...
これを行うにはストアド プロシージャが必要ですか?
MySQL にこの機能がないのはなぜですか?
INSERT INTO abc (a) VALUES ('bla')
ON DUPLICATE KEY
INSERT INTO ...
これを行うにはストアド プロシージャが必要ですか?
正確にどこに挿入しますか?同じテーブル?主キーがすでに存在するため、それが不可能であることはすでにわかっています。
行を別のテーブルに挿入することについて話している場合、それはまったく別のことであり、単一の挿入ステートメントで行うことはできません。これは、insert
ステートメントの一般的な考え方が、特定の行を特定のテーブルに入れることだからです。これは通常、「代わりに」タイプのトリガーで実行できます。
insert
この考えは、元の行が既に存在する場合に、単一のステートメントを使用して別の行を挿入しようとしてはならない(主キーの変更など) ことも意味します。その場合、主キーはほぼ間違いなく人工的なものであり、その場合はおそらく自動インクリメント キーが適しています。
背後にある考え方insert ... on duplicate key update
は、その行が既に存在するかどうかに関係なく取得することです。特定の行を特定のテーブルに取得します。