您好,登錄后才能下訂單哦!
SQLserver中怎么在載入數據時解除對數的約束,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
當向表中載入數據的時候,有時會不得不解除對表的約束。假定表已經被刪減過或有損壞了, 更有可能的是表存有如外部關鍵字之類的引用完整性約束,這時數據庫不會允許向表中插入不在其它表中存在相關關系的數據,如果引用列在其它的表中不存在的話,在最初裝入數據的時候可能會不得不解除對表的約束。當然當載入成功以后,應該將這些約束恢復。
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;
這個對象已經生成了一系列的 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 被設置為 OFF 也是說你在執行不會看到對應的語句 但是由于FEEDBACK 設置為 ON 所以你可以看到結果Constraint Disabled.如果 ECHO 和 FEEDBACK 都設置成 OFF 了,在執行時將什么都不會顯示,只是經過一段時間的暫停以后又回到了 SQL>的提示符下,現在你可以放心地載入你的數據而不必擔心因為約束而導致的錯誤了。約束是好事但它在數據載入的時候會造成障礙也可以使用相同的思想來恢復對表的約束。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。