我想在表(如下所示)獲取新插入時自動刪除行,如果滿足某些條件的話。在某些情況下使用mysql刪除行
當:
- 有指同一個「場」以同樣「USER_ID」
- 他們的「場」,「顯示」和「搜索」列屬於同一
簡單地說,當行重複時('group_id'列除外)應該刪除非空'group_id',否則應該更新或插入一行。
有沒有辦法在mysql中設置此(在精神「上的重複做的東西」配合獨有的按鍵等),還是我在PHP中明確地檢查它(與多個查詢) ?
附加信息: 對於每個可能的「字段」(其中有一個有限的集合,在其他地方定義),應始終存在一行具有NULL'group_id'的行。另一方面,可能沒有非空'group_id'。
CREATE TABLE `Views` (
`user_id` SMALLINT(5) UNSIGNED NOT NULL,
`db` ENUM('db_a','db_b') NOT NULL COLLATE 'utf8_swedish_ci',
`field` VARCHAR(40) NOT NULL COLLATE 'utf8_swedish_ci',
`display` TINYINT(1) UNSIGNED NOT NULL,
`search` TINYINT(1) UNSIGNED NOT NULL,
`group_id` SMALLINT(6) UNSIGNED NULL DEFAULT NULL,
UNIQUE INDEX `user_id` (`field`, `db`, `user_id`),
INDEX `Views_ibfk_1` (`user_id`),
INDEX `group_id` (`group_id`),
CONSTRAINT `Views_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `User` (`id`) ON
UPDATE CASCADE ON DELETE CASCADE
)
COLLATE='utf8_swedish_ci'
ENGINE=InnoDB;
你能否更好地解釋一下:「當除group_id列之外的所有列都相同時,應該刪除非空group_id的行」? – inigomedina