2 回答
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 相关的所有问题!
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
同样,这是基于我对您的问题的理解(或缺乏理解)。
- 2 回答
- 0 关注
- 100 浏览
添加回答
举报