使用分隔符在文件中创建 SQLite 触发器
Creating SQLite trigger in file with delimiter
我有一个 table 并希望确保它只包含一行。因此,我添加了几个触发器,但收到以下错误。
应该如何使用定界符,我能否在两个触发器周围只使用一个定界符?
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 ;
SQL站点没有自定义分隔符。
SQL 标准说语句用分号分隔,所以这就是 SQLite 使用的。
(而且它足够聪明,可以检测到触发器主体的末端。)
我有一个 table 并希望确保它只包含一行。因此,我添加了几个触发器,但收到以下错误。
应该如何使用定界符,我能否在两个触发器周围只使用一个定界符?
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 ;
SQL站点没有自定义分隔符。
SQL 标准说语句用分号分隔,所以这就是 SQLite 使用的。 (而且它足够聪明,可以检测到触发器主体的末端。)