INSERT INTO users (firstname, lastname, email, mobile) VALUES ('Karem', 'Parem', 'mail@mail.com', '123456789');
这是我想要做的,但是如果已经存在具有相同电子邮件mail@mail.com
的行,那么它应该使用这些值更新该行。
我找到http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html,但我不明白
答案 0 :(得分:5)
使用ALTER TABLE在email
列上添加唯一约束,然后尝试此查询:
INSERT INTO users(firstname, lastname, email, mobile)
VALUES ('Karem', 'Parem', 'mail@mail.com', '123456789')
ON DUPLICATE KEY UPDATE
firstname = 'Karem',
lastname = 'Parem',
email = 'mail@mail.com', -- you can probably omit this
mobile = '123456789'
但请注意 - 如果您在表上定义了任何其他唯一键(包括主键,根据定义是唯一的),那么它们也可以触发更新。
答案 1 :(得分:1)
您可以使用triggers来实现此目标,但在插入/更新之前,IMHO检查是否存在主键更合适: