我的网站上有3张桌子。
我将注释主键连接到“线程注释”字段。我想在向特定线程提供注释的同时使用insert into命令。
我如何编写命令?!?
是这样的: string myCommand="INSERT INTO [Threads].[Comments] VALUES(....";
将消息插入特定线程吗? 如果我想同时向两者插入数据怎么办?一个帖子的标题和评论的日期...我可以将两个命令组合成一个吗?
答案 0 :(得分:1)
您必须创建两个单独的INSERT
语句。您可以将它们包装在事务中,以确保它们都不会被提交,除非它们都成功。
答案 1 :(得分:1)
您已将外键设置为前置,如果您在threads表中有一个链接到comments表的主键的外键,则一个注释可以与多个线程相关,但一个线程只能有一个注释
答案 2 :(得分:1)
你仍然需要两个INSERT语句,但听起来你想要从第一个插入中获取IDENTITY并在第二个插入中使用它,在这种情况下,你可能想要查看OUTPUT或OUTPUT INTO:{{3} }
(我对之前提出的同一问题的回答:http://msdn.microsoft.com/en-us/library/ms177564.aspx)
答案 3 :(得分:0)
使用两个命令插入“线程和注释”。首先插入Threads并获取id:
string myCommand = "INSERT INTO [Threads] (...";
// execute
string myCommand = "SELECT SCOPE_IDENTITY()";
// execute - put in thread ID
然后使用线程ID
插入注释string myCommand = "INSERT INTO [Comments] (" + ThreadID + "...";
在单个INSERT命令中以某种方式完成此操作没有任何实际价值或观点。
修改根据评论建议将@@ IDENTITY更改为SCOPE_IDENTITY()。谢谢!
答案 4 :(得分:0)
我创建了一个存储过程,并将两个插入放入SP中的一个事务中。您可以使用@@SCOPE_IDENTITY从插入中获取ID到线程中,并将其插入到注释表中:
INSERT INTO [Threads] (...
INSERT INTO [Comments]
SELECT
@@SCOPE_IDENTITY,
OtherValues ...
您可以使用前面所述的transaction来使其更加强大。使用SQL命令从C#代码调用SP。