CREATE TABLE data(id INTEGER PRIMARY KEY, name TEXT NOT NULL);
我有一个 TEXT NOT NULL 字段“name”,但是在
INSERT
上,用户可能不会给出放置在那里的名称。在这种情况下,我想生成一个类似 'data'+ROWID
的名称。这(在 INSERT 期间引用另一个字段中的 ROWID)可以在 SQLite 中完成吗?
伪代码:
if( name == null )
INSERT INTO data (name) VALUES ('data'+ROWID);
else
INSERT INTO data (name) values ($name);
在表的定义中将
name
的默认值设置为空字符串:
CREATE TABLE data(id INTEGER PRIMARY KEY, name TEXT NOT NULL DEFAULT '');
AFTER INSERT
触发器,将 name
的空字符串更改为您想要的值:
CREATE TRIGGER trg_after_insert_data AFTER INSERT ON data
WHEN NEW.name = ''
BEGIN
UPDATE data
SET name = 'Data' || NEW.id
WHERE id = NEW.id;
END;
查看演示。