SQLserver中怎么在載入數(shù)據(jù)時(shí)解除對(duì)數(shù)的約束,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)建站主要從事成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)黔江,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
當(dāng)向表中載入數(shù)據(jù)的時(shí)候,有時(shí)會(huì)不得不解除對(duì)表的約束。假定表已經(jīng)被刪減過或有損壞了, 更有可能的是表存有如外部關(guān)鍵字之類的引用完整性約束,這時(shí)數(shù)據(jù)庫不會(huì)允許向表中插入不在其它表中存在相關(guān)關(guān)系的數(shù)據(jù),如果引用列在其它的表中不存在的話,在最初裝入數(shù)據(jù)的時(shí)候可能會(huì)不得不解除對(duì)表的約束。當(dāng)然當(dāng)載入成功以后,應(yīng)該將這些約束恢復(fù)。
INPUT
SQL> SET ECHO OFF
SQL> SET FEEDBACK OFF
SQL> SET HEADING OFF
SQL> SPOOL DISABLE.SQL
SQL> SELECT 'ALTER TABLE ' || TABLE_NAME ||
2 'DISABLE CONSTRAINT ' || CONSTRAINT_NAME || ';'
3 FROM SYS.DBA_CONSTRAINTS
4 WHERE OWNER = 'RYAN'
5 /
OUTPUT
ALTER TABLE ACCT_PAY DISABLE CONSTRAINT FK_ACCT_ID;
ALTER TABLE ACCT_REC DISABLE CONSTRAINT FK_ACCT_ID;
ALTER TABLE CUSTOMERS DISABLE CONSTRAINT FK_CUSTOMER_ID;
ALTER TABLE HISTORY DISABLE CONSTRAINT FK_ACCT_ID;
ALTER TABLE INVOICES DISABLE CONSTRAINT FK_ACCT_ID;
ALTER TABLE ORDERS DISABLE CONSTRAINT FK_ACCT_ID;
這個(gè)對(duì)象已經(jīng)生成了一系列的 ALTER TABLE 語句來解除所有為 RYAN 所擁有的表,在連接符末尾的分號(hào)是為了保證每個(gè)語句的完整。
INPUT/OUTPUT
SQL> SPOOL OFF
SQL> SET ECHO OFF
SQL> SET FEEDBACK ON
SQL> START DISABLE.SQL
Constraint Disabled.
Constraint Disabled.
Constraint Disabled.
Constraint Disabled.
Constraint Disabled.
Constraint Disabled.
注意在這里 ECHO 被設(shè)置為 OFF 也是說你在執(zhí)行不會(huì)看到對(duì)應(yīng)的語句 但是由于FEEDBACK 設(shè)置為 ON 所以你可以看到結(jié)果Constraint Disabled.如果 ECHO 和 FEEDBACK 都設(shè)置成 OFF 了,在執(zhí)行時(shí)將什么都不會(huì)顯示,只是經(jīng)過一段時(shí)間的暫停以后又回到了 SQL>的提示符下,現(xiàn)在你可以放心地載入你的數(shù)據(jù)而不必?fù)?dān)心因?yàn)榧s束而導(dǎo)致的錯(cuò)誤了。約束是好事但它在數(shù)據(jù)載入的時(shí)候會(huì)造成障礙也可以使用相同的思想來恢復(fù)對(duì)表的約束。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。