我想创建一个带有列的表,该列引用我也创建的序列的名称。理想情况下,我想要一个强制执行此操作的外键约束。我试过了
create table testtable (
sequence_name varchar2(128),
constraint testtableconstr
foreign key (sequence_name)
references user_sequences (sequence_name)
on delete set null
);
但我得到SQL Error: ORA-01031: insufficient privileges
。我怀疑这是不可能的,或者我需要添加像on update cascade
这样的东西。当我在这个表中插入行时,我可以做什么来强制执行此约束?
答案 0 :(得分:0)
我对你在这里要实现的目标感到有些困惑 - 一个序列(实际上)只有一个值,下一个要分配的数字,而不是之前分配的所有值。
如果您只是想确保从序列中填充关系中的属性,那么触发器将是正确的方法。
答案 1 :(得分:0)
我假设您正在尝试构建某种部署管理系统,以跟踪您的架构对象,包括序列。
要执行您的要求,您可以探索以下选项之一:
在每次部署后运行报告,比较表格与数据字典视图中的值,并列出任何差异。
创建一个DDL触发器,无论何时创建序列,都会自动执行插入操作。
在表格中添加一个触发器,对序列视图进行查询,如果找不到则引发异常。