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

问题描述 投票:0回答:1
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);
sql database sqlite
1个回答
0
投票

在表的定义中将

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;

查看演示

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