完整性约束讲解Word文档下载推荐.docx
《完整性约束讲解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整性约束讲解Word文档下载推荐.docx(12页珍藏版)》请在冰点文库上搜索。
![完整性约束讲解Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/0ffa5809-a945-41b4-8b96-a8de2cb33166/0ffa5809-a945-41b4-8b96-a8de2cb331661.gif)
insertintobranchvalues(‘XiangtanUniversity’,’Xiangtan’,4000000);
insertintobranchvalues(‘XiangtanUniversity’,’Xiangtan’,5000000);
记录结果并分析原因。
2.外键约束
a.按照图1所示,建立所有的外键约束。
b.运行以下的两条SQL语句:
insertintoloanvalues(‘L-001’,’XiangtanUniversity’,1000);
insertintoloanvalues(‘L-002’,’RainLake’,2000);
c.运行以下的SQL语句:
deletebranch;
3.unique约束
a.在loan表上建立一个unique约束,保证amount是唯一的。
b.运行以下SQL语句:
insertintoloanvalues(‘L-002’,’XiangtanUniversity’,2000);
c.使得刚才建立的约束无效化,并再次运行上一条SQL语句,记录结果并分析原因。
d.删除掉这个约束。
4.check约束
a.在loan表上建立一个check约束,保证amount必须为正数。
insertintoloanvalues(‘L-003’,’XiangtanUniversity’,-2000);
3、实验结果
1、建立所有表的主键约束。
ALTERTABLEaccount
ADDCONSTRAINTAPK_numPRIMARYKEY(account_number);
ALTERTABLEborrower
ADDCONSTRAINTBCU_namePRIMARYKEY(customer_name,loan_number);
ALTERTABLEbranchADDCONSTRAINTBH_namePRIMARYKEY(branch_name);
ALTERTABLEcustomerADDCONSTRAINTCC_namePRIMARYKEY(customer_name);
ALTERTABLEdepositorADDCONSTRAINTDC_namePRIMARYKEY(customer_name,account_number);
ALTERTABLEloanADDCONSTRAINTLL_numPRIMARYKEY(loan_number);
2、运行下列SQL语句:
脚本:
1行已插入
在行2上开始执行命令时出错:
insertintobranchvalues('
XiangtanUniversity'
'
Xiangtan'
5000000)
错误报告:
SQL错误:
ORA-00001:
违反唯一约束条件(2013960833.BH_NAME)
00001.00000-"
uniqueconstraint(%s.%s)violated"
*Cause:
AnUPDATEorINSERTstatementattemptedtoinsertaduplicatekey.
ForTrustedOracleconfiguredinDBMSMACmode,youmaysee
thismessageifaduplicateentryexistsatadifferentlevel.
*Action:
Eitherremovetheuniquerestrictionordonotinsertthekey.
分析:
已经插入一行,再插入同名的主键列会出错。
违反唯一约束条件。
3、建立所有的外键约束。
ALTERTABLEborrower
ADDCONSTRAINTFK1
FOREIGNKEY(customer_name)REFERENCEScustomer(customer_name);
ADDCONSTRAINTFK2
FOREIGNKEY(loan_number)REFERENCESloan(loan_number);
ALTERTABLEloan
ADDCONSTRAINTFK3
FOREIGNKEY(branch_name)REFERENCESbranch(branch_name);
ALTERTABLEdepositor
ADDCONSTRAINTFK4
ADDCONSTRAINTFK5
FOREIGNKEY(account_number)REFERENCESaccount(account_number);
ALTERTABLEaccount
ADDCONSTRAINTFK6
4、运行以下的两条SQL语句:
insertintoloanvalues('
L-002'
RainLake'
2000)
ORA-02291:
违反完整约束条件(2013960833.FK3)-未找到父项关键字
02291.00000-"
integrityconstraint(%s.%s)violated-parentkeynotfound"
Aforeignkeyvaluehasnomatchingprimarykeyvalue.
Deletetheforeignkeyoraddamatchingprimarykey.
5、运行以下的SQL语句:
在行1上开始执行命令时出错:
deletebranch
ORA-02292:
违反完整约束条件(2013960833.FK3)-已找到子记录
02292.00000-"
integrityconstraint(%s.%s)violated-childrecordfound"
attemptedtodeleteaparentkeyvaluethathadaforeign
dependency.
deletedependenciesfirstthenparentordisableconstraint.
6、在loan表上建立一个unique约束,保证amount是唯一的。
ALTERTABLEloan成功。
7、运行以下SQL语句:
8、使得刚才建立的约束无效化,并再次运行上一条SQL语句。
违反唯一约束条件(2013960833.LL_NUM)
9、删除掉这个约束。
altertableloandropunique(amount);
10、在loan表上建立一个check约束,保证amount必须为正数。
altertableloanaddcheck(amount>
0);
11、运行以下SQL语句:
L-003'
-2000)
ORA-02290:
违反检查约束条件(2013960833.SYS_C0051122)
02290.00000-"
checkconstraint(%s.%s)violated"
Thevaluesbeinginserteddonotsatisfythenamedcheck
donotinsertvaluesthatviolatetheconstraint.
插入的amount数据小于0,违反检查约束条件出错。