tôi đã xác định các bảng sauCú pháp để chèn danh tính FROM không có cột để chèn?
CREATE TABLE dbo.T_Comments_Paths
(
path_id bigint IDENTITY(1,1) NOT NULL
,CONSTRAINT [PK_T_Comments_Paths] PRIMARY KEY(path_id)
);
CREATE TABLE dbo.T_Comments
(
COM_Id int IDENTITY(1,1) NOT NULL
,COM_Text NATIONAL CHARACTER VARYING(255) NULL
,CONSTRAINT [PK_T_Comments] PRIMARY KEY(COM_Id)
);
Nếu tôi cần để có được một con đường-id cho một lời nhận xét, đối với một đơn giá trị, tôi có thể lấy nó như thế này:
DECLARE @outputTable TABLE (path_id bigint);
INSERT INTO T_Comments_Paths OUTPUT INSERTED.path_id INTO @outputTable DEFAULT VALUES;
SET @__pathuid = (SELECT TOP 1 id FROM @outputTable);
Tuy nhiên, Tôi không tìm thấy cú pháp để nhận các id được chèn (nhiều) cho một chèn từ một bảng khác.
ví dụ: Tôi muốn làm điều này:
DECLARE @outputTable TABLE (path_id bigint, com_id bigint);
INSERT INTO T_Comments_Paths
OUTPUT INSERTED.path_id, com_id INTO @outputTable DEFAULT VALUES
FROM T_Comments
này mang lại
"cú pháp không đúng gần FROM-khóa"
Làm thế nào tôi có thể làm điều đó (không có con trỏ)?
Lưu ý: Tôi cần tương thích với MySQL, vì vậy tôi không thể sử dụng newid(), vì không có uuid-type trong MySQL, và tôi không muốn sử dụng varchar hoặc varbinary ...
@Ivan Starostin: Đó không phải là bản sao, anh ấy chỉ chèn một giá trị. Tìm thấy bài đăng này là tốt. Đó không phải là điều tôi muốn. –
Bạn đã thử thêm tiền tố com_id bằng INSERTED chưa? Vì vậy: OUTPUT INSERTED.path_id, INSERTED.com_id INTO @outputTable DEFAULT VALUES? –
@ John Joseph: Tôi không chèn com_id vào T_Comments_Paths, tôi chỉ bao gồm nó trong bảng kết quả đầu ra, cùng với autoid được tạo ra. –