没干过,便研究了一下,发现直接用oracle 是无法解决的。只有几种变通方式: 1、用rowid。:new.rowid记录入表,然后你再写个job定时,从rowid还原回id。 缺点:一致性不好 2、将这个单表用简单视图替换,然后你就知道字段了。这个视图替换,可以写脚本跑批完成,将所有有主键的表建立都是相同主键名的视图。 缺点:需要建立很多没啥大用的视图。看着有点怪。 3、,视图字段固定后,用instead of触发器来实现。这个只是一种方法,针对你的需求,第2种要在各方面胜过此种。附查询主键的正确写法: select a.column_name into v_pk_column_name from user_cons_columns a, user_constraints b where a.constraint_name = b.constraint_name and b.constraint_type = 'P' and a.table_name =''
1、用rowid。:new.rowid记录入表,然后你再写个job定时,从rowid还原回id。
缺点:一致性不好
2、将这个单表用简单视图替换,然后你就知道字段了。这个视图替换,可以写脚本跑批完成,将所有有主键的表建立都是相同主键名的视图。
缺点:需要建立很多没啥大用的视图。看着有点怪。
3、,视图字段固定后,用instead of触发器来实现。这个只是一种方法,针对你的需求,第2种要在各方面胜过此种。附查询主键的正确写法:
select a.column_name
into v_pk_column_name
from user_cons_columns a, user_constraints b
where a.constraint_name = b.constraint_name
and b.constraint_type = 'P'
and a.table_name =''
如果是多个表,那么需要多个触发器实现。