【发布时间】:2018-05-07 00:08:24
【问题描述】:
我最近使用 Microsoft SQL Server Migration Assistant for Oracle 通过两遍方法将 Oracle 数据库转换为 SQL Server 数据库。
有两个表,BILL_INFO 和BILL_INFO_DETAIL,应该通过复合 PK 建立主从关系。但是,当我尝试创建该关系时,出现此错误:
'BILL_INFO' 表保存成功 'BILL_INFO_DETAIL' 表 - 无法创建关系“FK_BILL_INFO_DETAIL_BILL_INFO”。 ALTER TABLE 语句与 FOREIGN KEY 约束冲突 “FK_BILL_INFO_DETAIL_BILL_INFO”。数据库发生冲突 “我的数据库”,表“dbo.BILL_INFO”。
数据库受到不良数据的困扰。于是我在明细表中进行了基本搜索,找到了master中可能不存在的BILL_NUMBER、PAY_MODE_ID和CASHIER_ID(一一),在BILL_NUMBER上搜索时发现了两条记录。我修复了它们,还验证了 PAY_MODE_ID 和 CASHIER_ID 是否正常。
仍然无法创建关系。同样的错误。现在我想知道表之间的元组是否无效。如何找到只存在于明细表中的复合键?
【问题讨论】:
-
Select * from Bill_Info_Detail d left join Bill_Info on <your three columns> where Bill_Info.column is null -
除了您的问题之外,我想知道您是否将唯一键应用于 Bill_Info_Detail,而您实际上并不需要将键设为唯一。三个可能没有 LineNumber 或 TransactionID 会使其唯一。
标签: sql-server