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

时间:2019-12-16 20:18:26

标签: sqlite

我希望数据库中的每个表在其主键中都有一个前缀。例如,表EMPLOYERS中的第一行应具有EMP_00000001的ID,依此类推。我如何才能使插入的每个新行的ID为EMP_00000002, ...03, ...,最好有一个触发器?

2 个答案:

答案 0 :(得分:1)

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

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            name
------------  ----------
EMP_00000001  Bill
EMP_00000002  Paul

答案 1 :(得分:0)

Update Emp set EMPLOYERS = EMPLOYERS + 1 where rowid=1