将行插入1:1相关表

Emb*_*123 0 t-sql sql-server shared-primary-key sql-insert

我想将新行放入与1:1相关的表中sql-server. 这些表的图表

如您所见,表使用相同的主键相互引用.这就是问题 - 我知道用两次INSERT调用放置数据会给我一个错误,说我违反了PK约束.有没有办法在代码中执行此操作?我想创建一个存储过程,用于添加"主要产品"(SUROWCE)并对应于它记录在"stock"(STAN)中.

我的代码尝试: INSERT INTO STAN VALUES(25, 5, 1000); INSERT INTO SUROWCE VALUES(25, 'wood');

Msg 547, Level 16, State 0, Line 4 The INSERT statement conflicted with the FOREIGN KEY constraint "FK_STAN_SUROWCE". The conflict occurred in database "TestBazyDanych", table "dbo.SUROWCE", column 'ID_SUROWCA'.

Dav*_*oft 5

在1:1关系中,只有一个表具有引用另一个的外键.所以你先插入没有外键的表.尝试简单地颠倒插入的顺序:

INSERT INTO SUROWCE VALUES(25, 'wood');
INSERT INTO STAN VALUES(25, 5, 1000);
Run Code Online (Sandbox Code Playgroud)

  • 而且,像往常一样,如果要确保成功或不成功,则应将两个插入包装在事务中. (3认同)