我有一张表,我正在尝试创建一个根据条件有效而增加的列。
在我的示例中,我需要更新部门=营销部门。任何人都有使用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与我的数据库交互,如果这有助于解决这个问题。
答案 0 :(得分:0)
<强>更新强>
实际上,考虑一下,你可能不需要触发器:
INSERT INTO Table (Department, Department_Count)
VALUES (?, (SELECT MAX(IFNULL(Department_Count, 0)+1 FROM Table WHERE Department = ?))
可能会给你你想要的东西。
原始答案
你无法以声明的方式做到这一点,但你可以使用trigger以程序方式完成你想要的任务。
两种可能的策略:
使用AFTER INSERT触发器对最近插入的行执行UPDATE语句(RowID将在INSERT后可用),以根据表中的当前数据将Departement_Count列设置为SELECT表达式。
使用INSTEAD OF触发器执行备用INSERT,将NEW游标中的值与类似的SELECT语句组合,以从Department_Count列中获取最大值(加1)。