Làm cách nào để thực thi một bảng chỉ có một hàng? Dưới đây là những gì tôi đã thử. Kích hoạt UPDATE
có thể hoạt động, tuy nhiên, kích hoạt CREATE
chắc chắn sẽ không hoạt động. Đối với CREATE, tôi muốn sử dụng SET
, tuy nhiên, SET
không được hỗ trợ bởi SQLite.Đảm bảo bảng SQLite chỉ có một hàng
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;
Tôi thích giải pháp thứ hai của bạn! Cảm ơn lời giải thích về 'RAISE'. Không phải là tôi sẽ cần phải sử dụng một kích hoạt cho giải pháp thứ hai của bạn, làm thế nào để hạn chế 'UPDATE' được thực thi? Cách tôi hiển thị nó bằng cách sử dụng 'CREATE TRIGGER config_update_zero TRƯỚC KHI CẬP NHẬT VỀ cấu hình CHO MACHI ROW BEGIN NEW.id = OLD.id; END; NEW.id = OLD.id; '? – user1032531
Bạn cần kích hoạt UPDATE để làm gì? –
Không muốn cho phép 'UPDATE config SET id = 2'. Cấp, giải pháp thứ hai của bạn ngăn chặn điều này, và chỉ tò mò làm thế nào nó sẽ được thực hiện với một kích hoạt. – user1032531