我创建了两个表,Customers和Records。记录对customerID有外键约束。当我尝试将记录插入已存在的客户时,它会给我这个错误:
Message (The INSERT statement conflicted with the FOREIGN KEY constraint "FK_REC_cstmr_int_id". The conflict occurred in database "Omitted", table "dbo.CST_NEW_CUSTOMER", column 'cstmr_int_id'.)
这是插入代码:
INSERT INTO [Omitted].[dbo].[REC_NEW_RECORDS]
([cstmr_int_id]
,[xml_tx]
VALUES
(10
,'<test>test</test>'
GO
我在这里找到的大多数相关问题都谈到了以错误的顺序插入,但我可以选择ID为10的客户。任何指针都将受到赞赏。
编辑1:返回一个客户
SELECT [cstmr_int_id]
FROM [Omitted].[dbo].[CST_NEW_CUSTOMER] WHERE cstmr_int_id =10
编辑2:这是记录表的创建脚本
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[REC_NEW_RECORDS](
[rec_int_id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[cstmr_int_id] [int] NOT NULL,
[xml_tx] [varchar](max) NULL,
CONSTRAINT [REC_PK_rec_int_id] PRIMARY KEY CLUSTERED
(
[rec_int_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[REC_NEW_RECORDS] WITH CHECK ADD CONSTRAINT [FK_REC_cstmr_int_id] FOREIGN KEY([cstmr_int_id])
REFERENCES [dbo].[CST_NEW_CUSTOMER] ([cstmr_int_id])
GO
答案 0 :(得分:5)
引用的表中不存在该值。这是您引用的表中没有10
的方案:
设置
create table cst_new_customer (
cstmr_int_id int not null primary key);
insert into cst_new_customer (cstmr_int_id) values (9), (11);
create table rec_new_records (
cstmr_int_id int not null primary key,
xml_tx varchar(50));
alter table rec_new_records add constraint fk_rec_cstmr_int_id
foreign key (cstmr_int_id) references cst_new_customer (cstmr_int_id);
测试1
insert into rec_new_records values (10, 'test');
<强>结果强>
INSERT语句与FOREIGN KEY约束“fk_rec_cstmr_int_id”冲突。冲突发生在数据库“db_3_055da”,表“dbo.cst_new_customer”,列'cstmr_int_id'中:
测试2
insert into rec_new_records values (11, 'test');
<强>结果强>
| CSTMR_INT_ID | XML_TX | |--------------|--------| | 11 | test |
答案 1 :(得分:1)
您是否对上述所有查询/语句使用相同的连接?
问题可能只与未提交的交易有关。
答案 2 :(得分:0)
我今天遇到的这个问题的一个可能情况是我有两个外键约束。我只在引用的表中插入了其中一个,但我不知道没有插入的第二个外键约束。