我有一个表,我试图在其中创建一个列,该列将根据有效条件递增。
在我的示例中,我需要更新 department = Marketing 的部门计数。任何人都有使用 SQLite 执行此操作的好方法吗?
当前表
Name Department Department_Count
James Accounting NULL
Jennifer Marketing NULL
Micheal Warehouse NULL
Natalie Marketing NULL
Rebecca Marketing NULL
更新表格
Name Department Department_Count
James Accounting NULL
Jennifer Marketing 1
Micheal Warehouse NULL
Natalie Marketing 2
Rebecca Marketing 3
编辑:
目前,我将部门为“市场营销”的行插入到一个新表中,然后我使用主键或 rowid 创建一个自动递增,以便我可以对这些类型的项目进行编号。
这需要我创建一个新表,这不是最好的,因为它占用了太多空间,而且该表是多余的,因为我已经在这个原始表中拥有基础数据。
我正在使用 python 与我的数据库交互,如果这有助于解决这个问题的话。
最佳答案
更新
其实仔细想想,你可能不需要触发器:
INSERT INTO Table (Department, Department_Count)
VALUES (?, (SELECT MAX(IFNULL(Department_Count, 0)+1 FROM Table WHERE Department = ?))
可能会给你你想要的。
原始答案
您不能以声明方式执行此操作,但您可以使用 trigger 以程序方式完成您想要的操作.
两种可能的策略:
使用 AFTER INSERT 触发器对最近插入的行执行 UPDATE 语句(RowID 将在 AFTER INSERT 后可用)以根据表中的当前数据将 Departement_Count 列设置为 SELECT 表达式。
使用 INSTEAD OF 触发器执行备用 INSERT,将 NEW 游标中的值与类似的 SELECT 语句相结合,以从 Department_Count 列中获取最大值(加 1)。
关于python-3.x - sqlite 中条件的编号列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50240991/