有什么方法可以为sqlite编写SQL输入文件,从而以某种方式“抛出”错误,例如。如果不满足条件,则回滚退出事务?
我有一个脚本,它应该做某事,但前提是一个表中有一定的行。如果不存在,脚本的执行可能会导致致命的结果并破坏数据库。
该脚本现在仅按需启动,但是我希望添加故障保护功能,以防万一出现问题时无法执行该脚本。
基本上我需要的是
/* IF */ SELECT value FROM meta WHERE key = 'version' /* != hardcoded_version_string THROW SOME EXCEPTION */
有什么办法可以做到这一点?在Postgre / Oracle中,可以使用PLSQL完成此操作,但是我不确定sqlite是否支持任何此类操作?
最佳答案
Triggers可以使用RAISE函数生成错误:
CREATE VIEW test AS SELECT NULL AS value;
CREATE TRIGGER test_insert
INSTEAD OF INSERT ON test
BEGIN
SELECT RAISE(FAIL, 'wrong value')
WHERE NEW.value != 'fixed_value';
END;
INSERT INTO test SELECT 'fixed_value';
INSERT INTO test SELECT 'whatever';
Error: wrong value
关于sql - SQLITE:如果select返回特定值,则停止执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34580615/