2 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
該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)
注意:我建議始終明確指定要插入數(shù)據(jù)的列列表 - 這樣,如果您的表突然有一個(gè)額外的列,或者您的表有一個(gè)IDENTITY或計(jì)算的列,您將不會(huì)有任何令人討厭的驚喜。是的 - 需要多做一點(diǎn)工作 -一次- 但是你的INSERT陳述會(huì)盡可能可靠,如果你的表格發(fā)生變化,你就不必經(jīng)常擺弄它。
(2)如果您沒(méi)有將所有值作為文字和/或變量,而是希望依靠另一個(gè)表、多個(gè)表或視圖來(lái)提供值,那么您可以使用以下INSERT ... SELECT ...方法:
INSERT INTO dbo.Attendance (User_ID, [Month], [Year], Status)
SELECT User_ID, @Month, @Year, @Status
FROM dbo.Users
在這里,您必須在中定義SELECT與您INSERT期望的一樣多的項(xiàng)目 - 這些項(xiàng)目可以是表(或視圖)中的列,也可以是文字或變量。再次:明確提供要插入的列列表 - 見(jiàn)上文。
您可以使用其中一個(gè)- 但不能混合使用兩者 - 您不能使用然后VALUES(...)在SELECT值列表中間進(jìn)行查詢(xún) - 選擇兩者之一 - 堅(jiān)持下去。而且該WITH VALUES(....)構(gòu)造根本不是有效的 T-SQL 代碼...
有關(guān)更多詳細(xì)信息和更深入的報(bào)道,請(qǐng)參閱官方 MSDN SQL Server 聯(lián)機(jī)叢書(shū)文檔INSERT- 一個(gè)很好的資源,用于解決與 SQL Server 相關(guān)的所有問(wèn)題!

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
我不確定我是否完全理解您的問(wèn)題,但是,如果您只是想在將記錄插入另一個(gè)表的同時(shí)將您的 user_id 插入另一個(gè)表,您可以在接收到的表中添加一個(gè) INSERT TRIGGER data first 將記錄添加到任何其他表中。
例如,假設(shè)您有一個(gè) Table1,它也應(yīng)該將數(shù)據(jù)插入到表 2 中。您可以通過(guò)將此觸發(fā)器添加到 Table1 來(lái)完成此操作:
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
同樣,這是基于我對(duì)您的問(wèn)題的理解(或缺乏理解)。
- 2 回答
- 0 關(guān)注
- 138 瀏覽
添加回答
舉報(bào)