INSERT INTO users (firstname, lastname, email, mobile) VALUES ('Karem', 'Parem', '[email protected]', '123456789');
これは私がやりたいことですが、同じ電子メール[email protected]
の行がすでに存在する場合は、これらの値でその行を更新する必要があります。 挿入して既に存在する場合は、列を更新します。SQL
INSERT INTO users (firstname, lastname, email, mobile) VALUES ('Karem', 'Parem', '[email protected]', '123456789');
これは私がやりたいことですが、同じ電子メール[email protected]
の行がすでに存在する場合は、これらの値でその行を更新する必要があります。 挿入して既に存在する場合は、列を更新します。SQL
使用ALTER TABLEこのクエリを試行しemail
列に一意制約を追加するには:
INSERT INTO users(firstname, lastname, email, mobile)
VALUES ('Karem', 'Parem', '[email protected]', '123456789')
ON DUPLICATE KEY UPDATE
firstname = 'Karem',
lastname = 'Parem',
email = '[email protected]', -- you can probably omit this
mobile = '123456789'
は、しかし注意してください - あなたは(主キーなど、あなたのテーブルの上に定義された他のユニークなキーを持っている場合は、定義上ユニークなものです)、更新をトリガーすることもできます。
非常に素晴らしい機能! –
私はその電子メールが一意に見えるはずの電子メールをどうすればいいのですか?電子メールには、インデックス名が "uniq_email"のユニークなインデックスがあります。 – Karem
@ Karem:できません。 MySQLはすべてのユニークなインデックスを考慮します。 –
あなたはtriggersを使用しますが私見挿入する前に、主キーの存在をチェックすることにより、この目標を達成理解しない/更新が、より適切である:
特に理解していないものはありますか?あなたはそれを試しましたか?何が起こった?これまでに何を持っていますか? –
可能な複製[存在する場合はどのように更新するのですか?MySQLに登録していない場合は挿入しますか?](http://stackoverflow.com/questions/1218905/how-do-i-update-if-exists-インサート - ノ - アップ - アップサルト - または - マージ - イン - mysqlの) –