【发布时间】:2017-12-04 22:12:50
【问题描述】:
我有一个表 SIGHTINGS(NAME, PERSON, LOCATION, SIGHTED),我正在尝试使用以下查询在该表中插入一个新行:
INSERT INTO SIGHTINGS (NAME, PERSON, LOCATION, SIGHTED)
VALUES ('Douglas dustymaiden', 'Person B', 'Double Mountain', '2005-11-28');
但它返回此错误:
[2017-12-04 17:08:18] [1] [SQLITE_ERROR] SQL error or missing database (sub-select returns 6 columns - expected 1)
我查找了 sqlite 插入 here 的正确语法,据我所知,插入是正确编写的。有人能告诉我为什么它会抛出这个错误而不是插入吗?如果这有助于发现任何问题,我正在使用 DataGrip 2017。
编辑:
这是我添加到数据库的触发器。插入无需触发器即可工作。
CREATE TRIGGER SightingLocationError
BEFORE INSERT ON SIGHTINGS
FOR EACH ROW
WHEN NEW.LOCATION NOT IN FEATURES
BEGIN
SELECT RAISE(ABORT, 'Error: Insert into the SIGHTINGS table references location that is not found in the database.');
END;
【问题讨论】:
-
如果您对触发器保密,我们将无法帮助您。
-
@CL。我不知道触发器会导致错误。我在没有触发器的数据库副本上对其进行了测试,但它仍然抛出了同样的错误。我将在上面发布触发器。
-
@CL。抱歉,我在测试时复制了错误的数据库。插入在没有触发器的情况下工作。
-
@CL。如果我的触发器抛出错误,它不会从 RAISE(ABORT, 'message') 函数中打印出错误消息吗?
标签: sqlite