首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大容量导入后检查约束

大容量导入后检查约束
EN

Stack Overflow用户
提问于 2017-07-17 12:03:29
回答 1查看 224关注 0票数 0

我的问题非常类似于this one,但适用于适应性服务器企业。我使用BCP将数据加载到数据库中。在批量导入期间,不执行外键约束检查。

在导入数据之后,检查外键约束的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-17 20:14:22

我不知道Sybase ASE中有类似于MSSQL的alter table/check check constraint的任何命令。

关于如何强制检查FK约束的几个想法:

  • bcp插入到暂存表中,然后从暂存表中选择插入到目标表;这会引发错误,但不一定告诉您哪一行失败了FK检查(除非您选择一次插入/选择1行)。
  • 用当前值更新FK列;ASE不够聪明,无法知道前后值是相同的,因此它将运行FK检查;同样,这将生成一个错误,但不会告诉您哪些行失败了FK检查;如果它确实通过并更新了一组行(以及相关的索引),效率也不高;类似的情况如下:
代码语言:javascript
复制
`update child_table set fk_col = fk_col      where  ... for-the-child-rows-just-inserted ...`
  • 请考虑运行一个not exists查询来查找不通过FK检查的行,如下所示:
代码语言:javascript
复制
 `select * from child c      where not exists(select 1 from parent p where p.pk = c.fk)     and   ... for-the-child-rows-just-inserted ...`
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45143822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档