sqlite - 架构错误:错误:SQLITE_ERROR:添加触发器以检查返回时输入不完整(如果日期在未来)
问题描述
这是我当前创建数据库的 sqllite 代码:
CREATE TABLE users(
user_id INT,
channel_id INT NOT NULL UNIQUE,
PRIMARY KEY (user_id)
);
CREATE TABLE credits(
user_id INT,
number_of_items INT CHECK(number_of_items > 0),
expiration DATETIME,
PRIMARY KEY (user_id, number_of_items, expiration),
FOREIGN KEY (user_id) REFERENCES users (user_id)
);
CREATE TABLE users_items(
user_id INT,
item_id INT,
PRIMARY KEY (user_id, item_id),
FOREIGN KEY (user_id) REFERENCES users (user_id)
);
这是我试图制作的触发器的代码
CREATE TRIGGER check_has_enough_credits_to_monitor_item
BEFORE INSERT ON users_items
BEGIN
SELECT
CASE
WHEN (SELECT COUNT(*) FROM users_items WHERE user_id = NEW.user_id) >=
(SELECT sum(number_of_items) FROM credits WHERE user_id = NEW.user_id AND expiration >= datetime('now'))
THEN RAISE (ABORT, 'No more items allowed')
END;
END;
在我的数据库中,每个用户都有存储在credits
表中的信用。这些信用允许一定数量的项目users_items
,但这些信用也有与之相关的到期。我想生成一个触发器,user_items
如果用户没有足够的信用(尚未过期),将阻止用户添加记录,但我的小提琴出现以下错误:
Schema Error: Error: SQLITE_ERROR: incomplete input
Schema Error: Error: SQLITE_ERROR: cannot commit - no transaction is active
解决方案
推荐阅读
- game-engine - 为什么索引文本对于字符串类型的值无效?
- ios - cordova-plugin-fcm-with-dependecy-updated 不适用于 IOS
- c++ - 随机打乱数组并使用快速排序算法
- javascript - 将不同的日期格式格式化为与语言环境兼容的格式
- json - NextJS 根据页面获取自定义 JSON
- json - 我收到一个错误,例如 JSONObject["global_collector"] is not a string,同时将 JsonObject 转换为 String 将它们保存在 Hashmap 中
- html - 子 div 的纵横比 16/9 始终适合 CSS 中的父 div,不适用于小高度
- python - Python正则表达式显示跨度之间的所有字符
- reactjs - 如何创建一个反应项目战争并将其部署在 jboss 上?
- javascript - 如何上传视频并在 HTML 页面中显示?