为了账号安全,请及时绑定邮箱和手机立即绑定

如何在插入数据的同时将一张表复制到另一张表

如何在插入数据的同时将一张表复制到另一张表

C#
动漫人物 2022-07-23 09:05:17
我想将用户 ID 复制到另一个表,同时向其中插入数据SqlCommand cmd = new SqlCommand(@"INSERT INTO Attendance (User_ID, Month, Year, Status) SELECT User_ID FROM Users WitH Values(@Month, @Year, @Status)", con);cmd.Parameters.AddWithValue(@"Month", cmbMonth.Text);cmd.Parameters.AddWithValue(@"Year", cmbYear.Text);cmd.Parameters.AddWithValue(@"Status", "Pending");
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

该INSERT命令有两种形式:


(1)要么您拥有所有可用的值,如文字或 SQL Server 变量 - 在这种情况下,您可以使用以下INSERT .. VALUES()方法:


DECLARE @User_ID INT;

SELECT @User_ID = User_ID

FROM dbo.Users

WHERE (some condition here)   -- most likely


INSERT INTO dbo.Attendance (User_ID, [Month], [Year], Status) 

VALUES (@User_ID, @Month, @Year, @Status)

注意:我建议始终明确指定要插入数据的列列表 - 这样,如果您的表突然有一个额外的列,或者您的表有一个IDENTITY或计算的列,您将不会有任何令人讨厌的惊喜。是的 - 需要多做一点工作 -一次- 但是你的INSERT陈述会尽可能可靠,如果你的表格发生变化,你就不必经常摆弄它。


(2)如果您没有将所有值作为文字和/或变量,而是希望依靠另一个表、多个表或视图来提供值,那么您可以使用以下INSERT ... SELECT ...方法:


INSERT INTO dbo.Attendance (User_ID, [Month], [Year], Status) 

    SELECT User_ID, @Month, @Year, @Status

    FROM dbo.Users 

在这里,您必须在中定义SELECT与您INSERT期望的一样多的项目 - 这些项目可以是表(或视图)中的列,也可以是文字或变量。再次:明确提供要插入的列列表 - 见上文。


您可以使用其中一个- 但不能混合使用两者 - 您不能使用然后VALUES(...)在SELECT值列表中间进行查询 - 选择两者之一 - 坚持下去。而且该WITH VALUES(....)构造根本不是有效的 T-SQL 代码...


有关更多详细信息和更深入的报道,请参阅官方 MSDN SQL Server 联机丛书文档INSERT- 一个很好的资源,用于解决与 SQL Server 相关的所有问题!


查看完整回答
反对 回复 2022-07-23
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

我不确定我是否完全理解您的问题,但是,如果您只是想在将记录插入另一个表的同时将您的 user_id 插入另一个表,您可以在接收到的表中添加一个 INSERT TRIGGER data first 将记录添加到任何其他表中。


例如,假设您有一个 Table1,它也应该将数据插入到表 2 中。您可以通过将此触发器添加到 Table1 来完成此操作:


CREATE TRIGGER trg_Table1_ins 

   ON  dbo.Table1 

   AFTER INSERT

AS 

BEGIN


    SET NOCOUNT ON;


    INSERT INTO dbo.Table2 ( [user_id] )

    SELECT [user_id] FROM inserted;


END

GO

同样,这是基于我对您的问题的理解(或缺乏理解)。


查看完整回答
反对 回复 2022-07-23
  • 2 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信