在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
但是,當我嘗試使電子郵件唯一時出現錯誤...如果出現此錯誤,它將如何工作? –