SQL Server:是否可以同时插入两个表?

184
我的数据库中包含三个表,分别叫做 Object_TableData_TableLink_Table。链接表只包含两列,一个对象记录的标识和一个数据记录的标识。
我想将与一个给定对象标识相关联的来自DATA_TABLE的数据复制,并将相应的记录插入到另一个给定对象标识对应的Data_TableLink_Table中。
我可以通过选择到一个表变量,然后循环执行每次迭代的两个插入操作来实现这一点。
这是最好的方法吗?
编辑:我想避免使用循环有两个原因,第一个原因是我懒,循环/临时表需要更多的代码,更多的代码意味着出错的地方更多,第二个原因是性能问题。
我可以在一个插入操作中复制所有数据,但如何让链接表与新数据记录相关联,其中每条记录都具有新的ID?

我不明白为什么要尝试使用一个插入语句,而使用两个插入语句可以完美地解决问题。你是想确保这两个插入语句都已经完成了吗?那么你需要检查一下提交/回滚指令。 - Philippe Grondier
4
我只需要两个插入,但需要插入链接表的身份是在第一个插入中生成的身份。 - tpower
11个回答

-3

//如果你想插入与第一个表相同的内容

$qry = "INSERT INTO table (one, two, three) VALUES('$one','$two','$three')";

$result = @mysql_query($qry);

$qry2 = "INSERT INTO table2 (one,two, three) VVALUES('$one','$two','$three')";

$result = @mysql_query($qry2);

//或者如果你想插入表格一的某些部分

 $qry = "INSERT INTO table (one, two, three) VALUES('$one','$two','$three')";


  $result = @mysql_query($qry);

 $qry2 = "INSERT INTO table2 (two) VALUES('$two')";

 $result = @mysql_query($qry2);

//我知道这看起来太好以至于不真实,但它确实有效,而且您可以继续添加查询,只需更改

    "$qry"-number and number in @mysql_query($qry"")

我已经在17个表格中成功运行了这个。


如果在插入过程中出现问题,你的插入将是不完整的。对吧?如果这样做...你有回滚函数来处理它吗?如果没有...你的数据完整性就会有问题。 - devasia2112
7
这个答案似乎在 PHP 中使用了 MySQL 的方法。问题标记为 [tag:sql] 和 [tag:sql-server],没有提到 MySQL 或 PHP。 - mskfisher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接