在MySQL數據庫,我有與用戶的地址表:MySQL的 - 限制TINYINT列
CREATE TABLE `user_address` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`user_id` INT(10) NOT NULL,
`street` VARCHAR(50) NULL DEFAULT NULL,
`number` VARCHAR(255) NULL DEFAULT NULL,
`city` VARCHAR(255) NULL DEFAULT NULL,
`zip` VARCHAR(255) NULL DEFAULT NULL,
`is_main` TINYINT(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
)
每個用戶地址的數量不限,但我想is_main
是1
每個用戶只有一次,以指示主要用戶的地址。所有其他用戶的地址將有is_main = 0
。
這可以限制在MySQL級別上嗎?
(ALTER TABLE user_address ADD UNIQUE INDEX is_main (is_main, user_id);
沒有幫助,因爲有幾條記錄與is_main=0
...)
我不認爲這是可能的,就像你說自己你可以在'is_main,user_id'上創建一個唯一索引,但是你只能有2個地址然後(一個是is_main = 1,另一個是is_main = 0 ),那麼你需要以另一種方式限制它,例如在你的代碼中。在插入它之前,請檢查是否有任何含有is_main = 1的行。 – davey