您好,登录后才能下订单哦!
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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。