Sqlite 插入新行时如何自动递增自定义主键

Sqlite 插入新行时如何自动递增自定义主键,sqlite,Sqlite,我希望数据库中的每个表的主键中都有一个前缀。例如,表EMPLOYERS中的第一行的id应为EMP_u00000001,依此类推。如何使插入的每一新行的id为EMP_00000002,…03,…,最好是带有触发器?与其与Sqlite的工作方式作斗争,不如在需要时将前缀添加到正常的rowid中(如果在许多不同的查询中使用长版本以避免不必要的重复,可以将其包装在视图中),并在连接、外键等内部坚持使用普通编号,以提高效率: Update Emp set EMPLOYERS = EMPLOYERS + 1

我希望数据库中的每个表的主键中都有一个前缀。例如,表
EMPLOYERS
中的第一行的id应为
EMP_u00000001
,依此类推。如何使插入的每一新行的id为
EMP_00000002,…03,…
,最好是带有触发器?

与其与Sqlite的工作方式作斗争,不如在需要时将前缀添加到正常的rowid中(如果在许多不同的查询中使用长版本以避免不必要的重复,可以将其包装在视图中),并在连接、外键等内部坚持使用普通编号,以提高效率:

Update Emp set EMPLOYERS = EMPLOYERS + 1 where rowid=1
CREATE TABLE employee_data(id INTEGER PRIMARY KEY AUTOINCREMENT, name);
CREATE VIEW employees(id, name) AS SELECT printf('EMP_%08d', id), name FROM employee_data;
INSERT INTO employee_data(name) VALUES ('Bill'), ('Paul');
SELECT * FROM employees;
id名称
------------  ----------
EMP_u00000001账单
EMP_u00000002保罗

EMPLOYERS
是表的名称。表的主键的形式为
EMP\u000051
,其中
XXXXXX
是行号。因此,假设我有50个条目,当我插入第51个条目时,我希望它的主键为
EMP\u000051
。将列设置为自动递增,并在执行插入操作时设置为le如果它为空,它将自动递增为EMP_51;…自动递增仅对整数值有效,而键是字符串。它不起作用。您可以对表进行计数,然后通过将1添加到其SelectCount(*)来插入新行从EMP;然后将count的值存储在变量中,然后通过向其中添加1来执行插入操作。为什么不简单地使用rowid或自动递增列呢?我真的看不出在主键前面加字符串的好处。@GMB您可能是对的,但我正在尝试一个混合SQL&mongo数据库,所以我将使用这些ID来匹配dat2之间的a。前缀只是为了适应未来可能的需要(我真的还没有想到)。整个递增的事情是不可能的吗?因为如果是的话,我会放弃它。