是否可以在sqlite中的自动递增字段中添加前缀,以便在添加新记录时,自动递增值包含前缀?
答案 0 :(得分:2)
是否有一种方法可以在sqlite中将前缀添加到自动递增字段,因此 当添加新记录时,自动增量值包含 前缀?
否。
此类列是特殊列,是 rowid 列的别名。这样的列必须是整数值。
此类列的预期用途实际上是能够唯一标识一行。
但是,始终可以返回带有前缀的值,例如通过使用
SELECT 'prefix'||mycolumn FROM mytable;
:-
DROP TABLE IF EXISTS mytable;
CREATE TABLE IF NOT EXISTS mytable (mycolumn INTEGER PRIMARY KEY, myothercolumn TEXT);
INSERT INTO mytable (myothercolumn) VALUES('Fred'),('Mary'),('Jane'),('andsoon');
SELECT 'myprefix'||mycolumn, myothercolumn FROM mytable;
可以复制您想要的内容,例如:-
DROP TRIGGER IF EXISTS mytable2manager;
DROP TABLE IF EXISTS mytable2;
CREATE TABLE IF NOT EXISTS mytable2 (mycolumn TEXT, myothercolumn TEXT);
CREATE TRIGGER IF NOT EXISTS mytable2manager AFTER INSERT ON mytable2 BEGIN
UPDATE mytable2 SET mycolumn = 'myprefix'||(SELECT count() FROM mytable2) WHERE rowid = new.rowid;
END;
INSERT INTO mytable2 (myothercolumn) VALUES('Fred'),('Mary'),('Jane'),('andsoon');
SELECT * FROM mytable2;
SET mycolumn = 'myprefix'||rowid
您甚至可以让模仿方法中的TRIGGER应用不同的前缀。当myothercolumn中的值以 M
开头时,以下示例使用不同的前缀:-
DROP TRIGGER IF EXISTS mytable2manager;
DROP TABLE IF EXISTS mytable2;
CREATE TABLE IF NOT EXISTS mytable2 (mycolumn TEXT, myothercolumn TEXT);
CREATE TRIGGER IF NOT EXISTS mytable2manager AFTER INSERT ON mytable2 BEGIN
UPDATE mytable2 SET mycolumn = CASE WHEN substr(new.myothercolumn,1,1) = 'M' THEN 'myprefix' ELSE 'myotherprefix' END||(SELECT count() FROM mytable2) WHERE rowid = new.rowid;
-- UPDATE mytable2 SET mycolumn = 'myprefix'||rowid WHERE rowid = new.rowid;
END;
INSERT INTO mytable2 (myothercolumn) VALUES('Fred'),('Mary'),('Jane'),('andsoon');
SELECT * FROM mytable2;
答案 1 :(得分:0)
最简单的方法可能是使用视图:
1.5.2