如何強制一個表只有一行?以下是我的嘗試。 UPDATE
觸發器可能工作,但是,CREATE
觸發器肯定不會。對於CREATE,我想使用SET
,但是SQLite不支持SET
。確保SQLite表只有一行
CREATE TABLE IF NOT EXISTS `config` (
`id` TINYINT NOT NULL DEFAULT 0,
`subdomain` VARCHAR(45) NOT NULL,
`timezone` CHAR(3) NOT NULL,
`timeout` TINYINT NOT NULL,
`offline` TINYINT NOT NULL,
`hash_config` CHAR(32) NOT NULL,
`hash_points` CHAR(32) NOT NULL,
PRIMARY KEY (`id`));
INSERT INTO config(id,subdomain,timezone,timeout,offline,hash_config,hash_points) VALUES(0,'subdomain','UTC',5,0,'hash_config','hash_points');
CREATE TRIGGER `config_insert_zero`
BEFORE INSERT ON `config`
FOR EACH ROW
BEGIN
-- SET NEW.id=0;
NEW.id=OLD.id;
END;
CREATE TRIGGER `config_update_zero`
BEFORE UPDATE ON `config`
FOR EACH ROW
BEGIN
-- SET NEW.id=0;
NEW.id=OLD.id;
END;
我喜歡你的第二個解決方案!感謝有關'RAISE'的解釋。不是因爲給出第二個解決方案,我需要使用觸發器,'UPDATE'約束如何執行?我如何使用CREATE TRIGGER顯示它config_update_zero BEFORE UPDATE ON config FOR EACH ROW BEGIN NEW.id = OLD.id; END; NEW.id = OLD.id;'? – user1032531
你需要什麼UPDATE觸發器? –
不想允許'UPDATE config SET id = 2'。當然,你的第二種解決方案可以防止這種情況發生,並且只是好奇它將如何完成觸發。 – user1032531