sqlite - 使用 RAISE 创建触发器

标签 sqlite triggers

我试图将表限制为只有一条记录,并禁止所有添加更多记录的尝试。 我创建了此触发器:CREATE TRIGGER abort_insert_to_my_tbl BEFORE INSERT ON my_tbl 开始 RAISE(ABORT,"您无法将记录添加到 my_tbl") 结束;

但我不断收到此错误:

Error: near line 3080: near "RAISE": syntax error  

我做错了什么?

最佳答案

作为documentation可见,RAISE是一个函数,而不是一个语句,所以不能直接在触发器体内使用。

要在语句中使用函数,请使用 SELECT 语句等:

CREATE TRIGGER abort_insert_to_my_tbl
BEFORE INSERT ON my_tbl
BEGIN
    SELECT RAISE(ABORT, 'You can''t add records to my_tbl');
END;

关于sqlite - 使用 RAISE 创建触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22201049/

相关文章:

mysql - 为什么 Rails 在使用不同的数据库时返回不同的浮点值?

sqlite - sqlite使用blob作为纪元日期时间

mysql - mysql 触发器中 if else block 内的 Use Case 语句

sql-server-2008 - 检索 MS SQL 2008 中生成的 ID

sql - HTML5 数据库的现状如何?

android - 使用 contentprovider 在 sqlite android 中插入一条记录

sql - 使用触发器更新多个表

mysql - 仅针对受影响的行在更新后触发

wpf - 您可以将路由事件与 MultiTrigger 一起使用吗?

mysql - 插入时需要 mysql 事件的最佳解决方案解决方法?