无法识别外键-SQL Server

问题描述 投票:-1回答:1

我有三个不同的表:access_role,access_item和access_switch。 access_switch定义为:

CREATE TABLE access_switch (
switch_id INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
item_id INT NOT NULL,
role_id INT NOT NULL,
created_by VARCHAR(50) NOT NULL,
access_level VARCHAR(10) NOT NULL,

FOREIGN KEY (item_id) REFERENCES access_item(item_id),
FOREIGN KEY (role_id) REFERENCES access_role(role_id)

我想为数据库创建种子数据,因此我在项目中使用sql脚本。 insert语句对于access_role和access_item正常工作,但是对于access_switch错误。它带来的错误是:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK__access_sw__item___090A5324". The conflict occurred in database "proj1_db_dev", table "dbo.access_item", column 'item_id'.

但是,我已验证记录是否确实存在于其他表中。此外,当我直接在SQL Server Management Studio中使用同一插入语句时,它可以正常工作。

我使用flyway进行数据库迁移。

有什么建议吗?

编辑:

我对access_switch的插入语句:

INSERT INTO access_switch (item_id, role_id, access_level, created_by) VALUES (2, 1, 'OFF', 'user')
sql sql-server sql-insert flyway
1个回答
0
投票

由于FK引用,您需要与access_item和access_role表联接以进行插入。如果要手动插入,请确保值“ 2”应位于access_item表中,值“ 1”应位于access_role表中。

© www.soinside.com 2019 - 2024. All rights reserved.