我绝不是一个 SQL 程序员,我正在努力完成一些我很确定以前已经做过一百万次的事情。
我试图在每次插入新客户时在 sql 中自动生成客户编号,但触发器(或 sp?)只有在至少输入名字、姓氏和另一个称为案例编号的值时才会起作用。如果缺少任何这些字段,系统会生成错误。如果满足条件,系统会生成并向该客户分配一个唯一 ID,该 ID 以字母 GL- 开头,然后使用 5 位数字,因此客户 John Doe 为 GL-00001,Jane Doe 为 GL-00002。
如果我要求太多,我很抱歉,但我基本上是一个选择插入更新的人,仅此而已,所以提前感谢您的帮助。
最佳答案
如果我处于这种情况,我会:
--更改表,使名字、姓氏和案例编号为必填(NOT NULL)列。在将记录提交到数据库之前,在应用程序端处理必填字段的检查。
--如果尚不存在,请将标识列添加到客户表中。
--向客户表添加一个持久计算列,该表会将标识列格式化为所需的 GL-00000
格式。
/* Demo computed column for customer number */
create table #test (
id int identity,
customer_number as 'GL-' + left('00000', 5-len(cast(id as varchar(5)))) + cast(id as varchar(5)) persisted,
name char(20)
)
insert into #test (name) values ('Joe')
insert into #test (name) values ('BobbyS')
select * from #test
drop table #test
这应该可以满足您的要求,而无需引入触发器的开销。
关于sql-server - SQL Server 触发器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4079091/