2017-07-17 84 views
0

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

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

回答

2

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

如何强制FK约束的检查一些想法:

  • bcp到一个临时表,然后通过从临时表中选择插入到目标表;这将产生一个错误,但不一定会告诉你哪个行FK检查失败(除非您选择一次插入/选择1行)

  • 用当前值更新FK列(s) (一个或多个); ASE不够聪明,无法知道前/后值是相同的,所以它会运行FK检查;再次,这将产生一个错误,但不会告诉你哪些行FK检查失败;如果它通过并更新一堆行(和相关索引),它也不是非常有效;是这样的:

update child_table set fk_col = fk_col where ... for-the-child-rows-just-inserted ...

  • 考虑运行not exists查询来查找失败的FK检查,像行:

select * from child c where not exists(select 1 from parent p where p.pk = c.fk) and ... for-the-child-rows-just-inserted ...

+0

谢谢你的提示!我真的不明白为什么没有更好的支持。将使用选项3。 – Beginner