溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SQLserver中怎么在載入數(shù)據(jù)時解除對數(shù)的約束

發(fā)布時間:2021-07-26 10:55:08 來源:億速云 閱讀:132 作者:Leah 欄目:數(shù)據(jù)庫

SQLserver中怎么在載入數(shù)據(jù)時解除對數(shù)的約束,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

當(dāng)向表中載入數(shù)據(jù)的時候,有時會不得不解除對表的約束。假定表已經(jīng)被刪減過或有損壞了, 更有可能的是表存有如外部關(guān)鍵字之類的引用完整性約束,這時數(shù)據(jù)庫不會允許向表中插入不在其它表中存在相關(guān)關(guān)系的數(shù)據(jù),如果引用列在其它的表中不存在的話,在最初裝入數(shù)據(jù)的時候可能會不得不解除對表的約束。當(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;

這個對象已經(jīng)生成了一系列的 ALTER TABLE 語句來解除所有為 RYAN 所擁有的表,在連接符末尾的分號是為了保證每個語句的完整。

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í)行不會看到對應(yīng)的語句 但是由于FEEDBACK 設(shè)置為 ON 所以你可以看到結(jié)果Constraint Disabled.如果 ECHO 和 FEEDBACK 都設(shè)置成 OFF 了,在執(zhí)行時將什么都不會顯示,只是經(jīng)過一段時間的暫停以后又回到了 SQL>的提示符下,現(xiàn)在你可以放心地載入你的數(shù)據(jù)而不必擔(dān)心因為約束而導(dǎo)致的錯誤了。約束是好事但它在數(shù)據(jù)載入的時候會造成障礙也可以使用相同的思想來恢復(fù)對表的約束。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI