我有一张桌子,希望确保它只包含一行。因此,我添加了几个触发器,但收到以下错误。
如何使用分隔符,我可以在两个触发器周围只有一个分隔符?
PS。不是问题的一部分,但我希望评论我是否应该使用BEFORE或AFTER以确保我只有一行。
pi@raspberrypi /var/www $ sqlite3 testing.db < testing.sql
Error: near line 81: near "DELIMITER": syntax error
Error: near line 87: near "$$": syntax error
Error: near line 95: near "$$": syntax error
pi@raspberrypi /var/www $
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,
`hash_config` CHAR(32) NOT NULL,
`hash_points` CHAR(32) NOT NULL,
PRIMARY KEY (`id`));
DELIMITER $$
CREATE TRIGGER `config_insert_zero`
BEFORE INSERT ON `config`
FOR EACH ROW
BEGIN
SET NEW.id=0;
END $$
CREATE TRIGGER `config_update_zero`
BEFORE UPDATE ON `config`
FOR EACH ROW
BEGIN
SET NEW.id=0;
END $$
DELIMITER ;
答案 0 :(得分:1)
SQLite没有自定义分隔符。
SQL标准说语句是用分号分隔的,所以这就是SQLite使用的。 (它足够聪明,可以检测触发器体的终点。)