我不是很喜欢数据库,我有以下疑问。
我正在使用 Oracle SQL Developer 作为“IDE”来处理 Oracle 数据库。
在这里,我可以检查一个名为 coda_rx 的表,其中包含一些字段。其中一个字段名为 PK_CODA(它是第一个),我认为它代表了该表的主键。它不是 nullabe(并且此特征必须是主键)。
我的问题是:当用户向我的 coda_rx 表中插入一条新记录时,如何检查该字段的值是否自动生成?
谢谢
最佳答案
要确认该列是否是表的主键,您可以加入 USER_CONSTRAINTS 和 USER_CONS_COLUMNS View 。
SELECT a.table_name,
a.constraint_type,
b.constraint_name,
b.column_name
FROM user_constraints a,
user_cons_columns b
WHERE a.owner= b.owner
AND a.table_name = b.table_name
AND a.constraint_name = b.constraint_name
AND a.table_name =UPPER('coda_rx')
AND a.constraint_type='P';
现在,有两种方法可以自动填充列:
- 标识列在12c中引入
- 触发器和序列
如果它是标识列,那么您可以查询all_tab_identity_cols View :
SELECT table_name,
column_name,
generation_type,
identity_options
FROM user_tab_identity_cols
WHERE table_name = UPPER('coda_rx')
ORDER BY 1,
2
如果表上有触发器使用序列填充列,您可以查询user_triggers View :
SELECT trigger_name,
table_name,
column_name
FROM user_triggers;
在 SQL Developer 中甚至更容易:
- 打开对象浏览器
- 单击并展开表格
- 单击并展开所需的表格
- 双击列名
- 它将打开表格 View 。
- 点击约束和触发器标签
有关这两个功能的更多详细信息,请阅读:
关于sql - 如何知道当用户向表中插入一条新记录时,是否自动生成了表示表主键的字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30345659/