我有一个包含 2 个表
chats
和 messages
的数据库。我设置了这个触发器:
CREATE TRIGGER IF NOT EXISTS insert_system_message
AFTER INSERT ON chats
BEGIN
INSERT INTO messages (role,content,message_index,"chat_id")
VALUES('role','message',0,NEW.id);
END;
列的 PRAGMA 输出
PRAGMA table_info(messages)
...> ;
0|id|INTEGER|1||1
1|role|TEXT|1||0
2|content|TEXT|1||0
3|message_index|INTEGER|0||0 -- this is important
4|chat_id|TEXT|1||0
5|previous_message|INTEGER|0||0
但是,在聊天中插入时,我收到此错误:
sqlite> insert into chats(id) values('abcd1234')
错误:没有这样的列:message_index
为什么会出现这种情况?
SQLite
现有列出现错误no such column
您的触发器尝试将值插入到
message_index
列中,但该列不存在。这就是为什么你有这个错误no such column
。
在创建上述触发器之前,需要确定
message_index
表中是否存在messages
列:
ALTER TABLE messages ADD COLUMN message_index INTEGER DEFAULT 0;
添加列后,可以再次创建触发器。
关于触发器本身,看起来是正确的。