【发布时间】:2019-01-10 10:47:54
【问题描述】:
我有以下两张表:
ITEMS(ID | CODE | NAME):项目被添加到表 items 并根据计数器表分配一个新代码COUNTERS(ID | YEAR | COUNTER):每年有一行,每年增加一个新行并将计数器设置为零。
我想在每次插入新项目时增加当年的计数器,并在当前项目的代码列分配格式化的计数器。
例子:
- 插入了一个新项目:
ID=34, CODE=null, NAME=productName - 当前年份的计数器递增:
ID=1, YEAR=2019, COUNTER=34 - 计数器值分配给代码列:
ID=34, CODE=CE201934, NAME=productName
如何创建执行此任务的触发器?如果当前年份发生变化,触发器必须在计数器表上添加一个新行。
【问题讨论】:
-
我认为您可以在插入表项时创建触发器。因为您必须检查今年的 COUNTERS 是否存在,否则插入并更新计数器。我认为使用计数器的更好方法是使用序列。对于触发器,请使用此文档:docs.microsoft.com/fr-fr/sql/t-sql/statements/…
-
删除项目后会发生什么?并仔细考虑您的生成逻辑。您选择将此值存储为字符串。它将如何使用?您是否打算根据这些值进行比较或排序。因为项目 #2 将是 CE20192,项目 #1000 将是 CE20191000。如果你对它们进行排序,哪一个在前?
标签: sql-server concurrency triggers