ops$tkyte@ORA10G> create table p
2 ( pk int primary key )
3 /
Table created.
ops$tkyte@ORA10G> create table c
2 ( fk constraint c_fk
3 references p(pk)
4 deferrable
5 initially immediate
6 )
7 /
Table created.第二条创建表C的语句看不太明白 好像没有字段啊
但是后面依然可以往里插入数据
2 ( pk int primary key )
3 /
Table created.
ops$tkyte@ORA10G> create table c
2 ( fk constraint c_fk
3 references p(pk)
4 deferrable
5 initially immediate
6 )
7 /
Table created.第二条创建表C的语句看不太明白 好像没有字段啊
但是后面依然可以往里插入数据
解决方案 »
- oracle新手求教
- 在 oracle 那个表中可以查看编译后的 select 语句
- ORACLE中用一条SQL实现其它进制到十进制的转换
- 很急,今晚在线等!关于数组!
- 如何统计oracle数据库中,平均SQL语句执行时间,可不可以从哪个表中直接获取
- oracle磁盘空间满了,请大家帮助,感激万分,很急
- 我想看看g_crm_codesseq这张表,怎么打开啊?(弱弱地问一下)这是什么写法啊?
- 关于工作流引擎的问题
- 有windows下pro*c开发经验的大侠请进,有问题请教
- 请教往oracle数据库中存图像的问题
- 如何卸载Oracle Developer Suite 10g
- 急求Oracle report 9i和 Oracle report 10g的下载地址!
命令
SQL>desc c
看一下就知道。至于deferrable initially immediate都是描述外键的属性,其中deferrable说明此外键是可延迟的,即对完整性的判断可以到commit时再进行。initially immediate说明对于上面的延迟性约束,在执行完一个sql语句后立即检查,而如果是initially deferred,则到commit时再检查。
有个地方看不明白 deferrable 说明此外键是可延迟的,对完整性的判断可以到commit时再进行
initially immediate 在执行完一个sql语句后立即检查,
这两个放在一起不是矛盾了吗
一个是commit才检查,一个sql执行完了就检查
==================================
约束的状态是可以通过命令更改的
initially immediate 只是指定了此约束初始化是immediate 的
你将来需要的话可以更改为deferrable
initially immediate和initically deferred指的是在约束的状态为deferrable的情况下,最开始(initically)是立即检查还是commit时检查,immediate和deferred可利用sqlplus命令
SET CONSTRAINT
来修改,如对楼主的例子,可以这样修改其状态SET CONSTRAINT c_fk DEFERRED;
SET CONSTRAINT c_fk IMMEDIATE;
错误是
ORA-02253:此处不允许约束条件说明就是第二行2 ( fk constraint c_fk 出错