我有一個存儲登錄數據的Mysql數據庫。密碼和salt被保存爲sha512哈希值。現在,如果要更改密碼列中的值,我想實現一個條件,即鹽必須改變,否則mysql命令無效。現在Mysql:更新第一列後可能強制更新第二列?
CREATE TABLE loginData(
id int UNSIGNED SERIAL DEFAULT VALUE,
email varchar(64) NOT NULL,
password binary(64) NOT NULL,
salt binary(64) NOT NULL,
PRIMARY KEY(id))
ENGINE=InnoDB;
,我想的是一樣的東西外鍵的完整性約束,但顯然我不應該連接的口令和鹽列外鍵。有什麼辦法來防止更新僅密碼列 - 這樣一個新的鹽必須給予 - 在 Mysql的的一面?僅在訪問代碼方面防止它感覺不完整。你都不可能做到這一點
SQL具有CHECK約束這樣的事情。但MySQL不支持它們。 (它解析,但不強制)考慮一個不同的RDBMS,或者通過可以強制執行此限制的存儲過程強制所有調用。 –