gpt4 book ai didi

Python/SQLite3 raise 函数错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:10 24 4
gpt4 key购买 nike

我的触发器中的 RAISE 功能遇到了小问题。这是我的 SQLite 代码:

CREATE TRIGGER CheckingDate
BEFORE INSERT ON MyTable
FOR EACH ROW
WHEN NEW.Start_date > NEW.End_date
BEGIN
RAISE(ABORT, 'End_date must be in the future');
END;

Start_dateend_dateSMALLDATETIMEStart_datedatetime('now' )

我在我的 python 2.7 程序中通过 sqlite3.complete_statement() 与所有其他 sql 脚本一起运行它,它在 RAISE 附近给出了 Syntax Error close 。有人能告诉我为什么吗?我尝试了 ABORTROLLBACK,而不是 ABORTSELECT CASEWHEN THEN在我的触发器中,但它仍然给出错误;

最佳答案

RAISE() 是一个 SQL 函数,您需要将其用作语句的一部分; TRIGGER 仅允许使用 UPDATEINSERTDELETESELECT 语句;在 SELECT 中使用它:

CREATE TRIGGER CheckingDate
BEFORE INSERT ON MyTable
FOR EACH ROW
WHEN NEW.Start_date > NEW.End_date
BEGIN
SELECT RAISE(ABORT, 'End_date must be in the future');
END;

这会正确触发错误:

sqlite> insert into mytable values ('2030-1-1 20:20:20', datetime('now'));
Error: End_date must be in the future

关于Python/SQLite3 raise 函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21143106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com