以下触发器仅用于将字符串值“undefined”替换为 DEFAULT 值,但所有插入的行都会受到影响:
CREATE TABLE IF NOT EXISTS mytable (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
mycolumn BOOLEAN DEFAULT '0');
CREATE TRIGGER IF NOT EXISTS onnull
AFTER INSERT ON mytable
FOR EACH ROW
WHEN NEW.mycolumn = 'undefined'
BEGIN
UPDATE mytable
SET mycolumn = (SELECT dflt_value FROM pragma_table_info('mytable') WHERE name = 'mycolumn' ) ;
END;
INSERT INTO 'mytable' ('mycolumn') VALUES
(true),
(false),
('undefined');
select * from mytable;
select
的结果表示“触发”值被应用到所有行:
1|'0'
2|'0'
3|'0'
有没有办法达到想要的效果?
我正在使用
SQLite version 3.40.1 2022-12-28
.
更新必须仅限于有问题的行,例如通过添加:
WHERE rowid=NEW.rowid