在MYSQL中,如果存在其他行,如何更新(而不是替换),否则会创建一个新行。未使用REPLACE INTO或ON DUPLICATE KEY UPDATE
我需要测试的列不是主键,它包含一个电子邮件地址。
基本上我有一个表,用于存储电子邮件和其他随机数据。我由一次独特的自动证其罪数列(ID)
我使用id列指会话数据,而不是电子邮件列的原因是因为邮件引用行作为保存会话由不知道id列存在的用户输入。
编辑:而我没有通过电子邮件引用会话的原因是因为电子邮件太长/不同长度(长故事,但他们使我的QR码所有不同的大小,我不想揭露电子邮件)
我敢肯定的两件事情:
REPLACE INTO
,这看起来像它会破坏我的身份证号码,因为这方法复制该行同时删除旧
和
ON DUPLICATE KEY UPDATE
这似乎需要一个唯一的密钥(ID),这是不是我需要它会更好,如果我可以做类似的比较:
ON DUPLICATE email UPDATE
或者是这样的(但我不认为它是有效的MYSQL):
var email='[email protected]';
var mysql=
"UPDATE table SET (...) WHERE email='"+email+"' "+
"IF @@ROWCOUNT=0 "+
"INSERT INTO table VALUES (...)";
MYSQL不可能这个可以吗?
我得到这个: #1170 - BLOB /在关键的规格没有一个密钥长度 –
TEXT列“电子邮件”检查我的更新,; D – Chococroc
但是,当我尝试使电子邮件唯一时出现错误...如果出现此错误,它将如何工作? –