现有列上的 SQLite“没有这样的列”错误

问题描述 投票:0回答:1

我有一个包含 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

为什么会出现这种情况?

sql sqlite
1个回答
0
投票

SQLite

no such column
现有列出现错误

您的触发器尝试将值插入到

message_index
列中,但该列不存在。这就是为什么你有这个错误
no such column

在创建上述触发器之前,需要确定

message_index
表中是否存在
messages
列:

ALTER TABLE messages ADD COLUMN message_index INTEGER DEFAULT 0;

添加列后,可以再次创建触发器。

关于触发器本身,看起来是正确的。

© www.soinside.com 2019 - 2024. All rights reserved.