插入返回错误:(子选择返回6列 - 预期1)

时间:2017-12-04 22:12:51

标签: sqlite

我有一个表格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;

1 个答案:

答案 0 :(得分:2)

WHEN NEW.LOCATION NOT IN FEATURES

FEATURES表有六列,因此数据库不知道它应该如何搜索位置值。

使用显式子查询返回要用于此目的的列:

WHEN NEW.LOCATION NOT IN (SELECT xxx FROM FEATURES)
相关问题