oracle trigger(触发器) 获得插入的那条数据的主键字段名和值,如果是复合主键呢?如何获取?
这是一个可公共用的功能:条件只已知表名,要做的是根据动态的表名取到动态的字段名,然后在触发器中得到这个对应动态的字段的数据new值或是old值。最好不要用拼字符串然后用i...
这是一个可公共用的功能:条件只已知表名,要做的是根据动态的表名取到动态的字段名,然后在触发器中得到这个对应动态的字段的数据new值或是old值。最好不要用拼字符串然后用immedate执行,不知道怎么实现?
展开
1个回答
展开全部
加个new限定就行了啊,比如:复合主键是(a,b,c), :new.a 、:new.b 、:new.c 就是值。想得到一个表的主键,就到dba_constraints字典里去查,constraint_type='P'就是主键行,constraint_name是主键约束的名字,再到dba_cons_columns字典里,按照约束名查找column_name,如果是复合主键,就有多行,position是顺序
select column_name from dba_cons_columns where (owner,constraint_name)=(select owner,constraint_name from dba_constraints where owner='.....' and table_name='.....' and constraint_type='P')
select column_name from dba_cons_columns where (owner,constraint_name)=(select owner,constraint_name from dba_constraints where owner='.....' and table_name='.....' and constraint_type='P')
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询