在SQLite插入的另一个字段中引用rowid

lmyy7pcs  于 12个月前  发布在  SQLite
关注(0)|答案(1)|浏览(173)
CREATE TABLE data(id INTEGER PRIMARY KEY, name TEXT NOT NULL);

字符串
我有一个TEXT NOT NULL字段“name”,但在INSERT上,用户可能没有给予一个名字。在这种情况下,我想生成一个像'data'+ROWID这样的名字。这(在调用过程中引用另一个字段中的ROWID)可以在SQLite中完成吗?
伪代码:

if( name == null )
    INSERT INTO data (name) VALUES ('data'+ROWID);
else
    INSERT INTO data (name) values ($name);

plicqrtu

plicqrtu1#

在表的定义中,将name的默认值设置为空字符串:

CREATE TABLE data(id INTEGER PRIMARY KEY, name TEXT NOT NULL DEFAULT '');

字符串
创建一个AFTER INSERT trigger,将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;


参见demo

相关问题