Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数据插入两个表失败,因为FK冲突_C#_Sql Server_Sql Server 2008_Ado.net_Transactions - Fatal编程技术网

C# 将数据插入两个表失败,因为FK冲突

C# 将数据插入两个表失败,因为FK冲突,c#,sql-server,sql-server-2008,ado.net,transactions,C#,Sql Server,Sql Server 2008,Ado.net,Transactions,我创建了一个存储过程,如下所示: INSERT DATA INTO TABLE_1 VALUES ('xx', 'yy', 'zz') SET @id = @@identity INSERT DATA INTO TABLE_2 VALUES (@id, 'text') -- throws exception 我从C代码中调用它,它封装在SqlTransaction中。问题是,它总是在第二次插入时抛出与外键约束冲突的INSERT语句 我调试了这个存储过程,结果显示错误来自第二条insert语句

我创建了一个存储过程,如下所示:

INSERT DATA INTO TABLE_1 VALUES ('xx', 'yy', 'zz')
SET @id = @@identity

INSERT DATA INTO TABLE_2 VALUES (@id, 'text') -- throws exception
我从C代码中调用它,它封装在
SqlTransaction
中。问题是,它总是在第二次插入时抛出与外键约束冲突的INSERT语句

我调试了这个存储过程,结果显示错误来自第二条insert语句@id设置正确

我已经在表_1中插入了数据,并且得到了新的id。我不明白为什么它仍然抛出异常

更新

表结构:

Table_1
id(int) PK
name_1 varchar(10)
name_2 varchar(10)
name_3 varchar(10)

Table_2
id(int) PK, FK to Table_1.id
text_1 varchar(10)
一些建议:

  • 尝试在
    INSERT
    语句中指定列名,这样在重新排列列顺序时就不会把事情搞砸
  • 使用
    SCOPE\u IDENTITY()
    而不是
    @@IDENTITY
    来检索新生成的标识。你可以读到他们的不同之处

  • 您在表1和表2上定义了哪些外键。我需要知道如何帮助你。。。。然后抛出错误跟踪,too请定义表的结构too我建议使用
    SCOPE\u IDENTITY()
    而不是任何其他方法来获取新插入的标识值。