----------
184
2.
先不做任何操作,执行下
delete
一行的操作,看下报错信息
ethan_user@ethanDB> delete from currency where CURRENCY_CODE='AED';
delete from currency where CURRENCY_CODE='AED'
*
ERROR at line 1:
ORA-02292: integrity constraint (ethan_user.FKCOUNTRY_CURRENCY) violated - child
record found
查看约束条件
ethan_user.FKCOUNTRY_CURRENCY
的具体信息
ethan_user@ethanDB> select constraint_name,constraint_type ,status,table_name from
user_constraints where constraint_name='FKCOUNTRY_CURRENCY';
CONSTRAINT_NAME
--------------------------------------------------------------------------------
C STATUS
- --------
TABLE_NAME
--------------------------------------------------------------------------------
FKCOUNTRY_CURRENCY
R ENABLED
COUNTRY
可以看出表
country
是表
currency
的子表,
constraint_type
为“
R
”
,即为外键约束。
ethan_user@ethanDB> select count(*) from country;
COUNT(*)
----------
248
3.
让父表的主键失效,从而让子表中的外键依赖关系失效
1.
)主键失效:
alter table table_name disable primary key cascade;
2.
)删除数据:
delete from table_name where id = 'xx';
3.
)主键重新生效:
alter table table_name enable primary key;
执行步骤如下:
步骤
1
:主键失效
通过如下主表
currency
的定义,查看主键约束为
CURRENCY_P
ethan_user@ethanDB> set pagesize 0
ethan_user@ethanDB> set long 9999
ethan_user@ethanDB> select dbms_metadata.get_ddl('TABLE','CURRENCY') from dual;
评论