Db2 如何使用标识并将其连接到表的其他列中?

Db2 如何使用标识并将其连接到表的其他列中?,db2,identity,Db2,Identity,如果我为列cust id上的表生成标识,我希望下一列userid为cust id+CID 例如,00000000 1CID,000000000 2CID 我应该为此包含什么sql 同样,如果我在Cust id列中有00001,在部分的abcd列中有00001abcd,则第三列必须有值00001abcd 请告诉我解决方案您只需要创建一个触发器。差不多 CREATE TRIGGER A BEFORE INSERT ON TABLE B REFERENCING NEW AS N FOR EAC

如果我为列
cust id
上的表生成标识,我希望下一列
userid
cust id+CID

例如,
00000000 1CID
000000000 2CID

我应该为此包含什么sql

同样,如果我在
Cust id
列中有
00001
,在
部分的
abcd
列中有
00001abcd
,则第三列必须有值
00001abcd


请告诉我解决方案

您只需要创建一个触发器。差不多

CREATE TRIGGER A 
 BEFORE INSERT ON TABLE B
 REFERENCING NEW AS N
 FOR EACH ROW
 BEGIN
  SET N.userid = N.CUST_ID + N.CID ;
  IF (N.CUST_ID = '00001' AND N.SECTION = 'abcd') THEN
   SET N.THIRD = N.CUST_ID + N.SECTION
  END IF;
 END @

顺便说一下,在列中生成值表明您的模块没有正常化,有时这是错误的来源。

这是用于什么数据库的?展示你的桌子结构!正在使用哪些列和哪些数据类型?db2|cust id | section | unique id |且值必须为| 0001 | abcd | 0001abcd |类似地,对于nxt行it | 0002 | aaaa | 0002aaaa |我们如何在表中实现这一点?必须使用cust id和section在表中连接唯一id。(DB2)为什么要这样做?在良好的数据库设计中,不允许使用多部分列。多列键被认为是更好的选择(您的两个原始列)。将数字存储为格式化字符串是一种快速疯狂的方式——当您获得第10000个客户时会发生什么?为什么
cust id
本身不是唯一的-为什么您觉得需要一个单独的“唯一”列?就这点而言,为什么它甚至必须是其他信息连接在一起?为什么不生成数字id或其他guid?为什么不使用生成的always列来代替触发器?是的。这是另一种可能性。世代表达