我有一个表格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 insert 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;
答案 0 :(得分:2)
WHEN NEW.LOCATION NOT IN FEATURES
FEATURES
表有六列,因此数据库不知道它应该如何搜索位置值。
使用显式子查询返回要用于此目的的列:
WHEN NEW.LOCATION NOT IN (SELECT xxx FROM FEATURES)