日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle约束的关键字Enable/Disable/Validate/Novalidate

發布時間:2024/8/26 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle约束的关键字Enable/Disable/Validate/Novalidate 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1?組合特性說明

?

Validate

Novalidate

已有記錄

新增/刪除記錄

已有記錄

新增/刪除記錄

Enable

Yes

Yes

No

Yes

Disable

Yes

No

No

No

Validate確保已有數據符合約束;

Novalidate不必考慮已有數據是否符合約束。

?

除非Novalidate被指定,Enable默認Validate;

除非Validate被指定,Disable默認Novalidate。

?

Enable Validate與Enable相同,檢查已有記錄和新增記錄,確保都符合約束;

Enable Novalidate?允許已有記錄不必滿足約束條件,但新增/修改的記錄必須滿足;

Disable Validate禁用約束,刪除約束上的索引,不允許修改任何被約束的記錄;

Disable Novalidate與Disable相同,禁用約束,刪除約束上的索引,且允許修改被約束的記錄。

2?建表

SQL> create table test(id int, name varchar2(10));

Table created

SQL> alter table test add constraint ck_id check(id > 10);

Table altered

3?測試1: Enable Validate

SQL> alter table test Enable validate constraint ck_id;

Table altered

SQL> insert into test values(5, 'Oracle');

insert into test values(5, 'Oracle')

ORA-02290:?違反檢查約束條件?(MYHR.CK_ID)

SQL> insert into test values(17,'ERP');

1 row inserted

SQL> commit;

Commit complete

4?測試2: Enable Novalidate

SQL> alter table test disable constraint ck_id;

Table altered

SQL> insert into test values(5, 'Oracle');

1 row inserted

SQL> commit;

Commit complete

SQL> select * from test;

???????????ID NAME

----------- ----------

??????????17 ERP

????????????5 Oracle

?

SQL> alter table test enable novalidate constraint ck_id;

Table altered

SQL> insert into test values(32, 'SAP');

1 row inserted

SQL> insert into test values(3, 'Linux');

insert into test values(3, 'Linux')

ORA-02290:?違反檢查約束條件?(MYHR.CK_ID)

SQL> commit;

Commit complete

5?測試3: Disable Validate

SQL> delete from test where id < 10;

1 row deleted

SQL> commit;

Commit complete

SQL> alter table test disable validate constraint ck_id;

Table altered

SQL> select * from test;

?????????????ID NAME

------------- ----------

?????????????17 ERP

?????????????32 SAP

SQL> update test set name = 'Change' where id = 17;

update test set name = 'Change' where id = 17

ORA-25128:?不能對帶有禁用和驗證約束條件?(MYHR.CK_ID)?的表進行插入/更新/刪除

6?測試4: Disable Novalidate

SQL> alter table test disable novalidate constraint ck_id;

Table altered

SQL> insert into test values(2, 'Linux');

1 row inserted

SQL> insert into test values(13, 'Windows');

1 row inserted

SQL> update test set name = 'Change' where id = 17;

1 row updated

SQL> commit;

Commit complete

SQL> select * from test;

??????????ID NAME

---------- ----------

??????????17 Change

??????????13 Windows

??????????32 SAP

???????????2 Linux

?

總結

以上是生活随笔為你收集整理的Oracle约束的关键字Enable/Disable/Validate/Novalidate的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。