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 關注
- 130 瀏覽
添加回答
舉報