Tôi có cùng nhu cầu và tìm thấy câu trả lời này ..
Điều này tạo ra một bản ghi trong bảng công ty (comp), nó lấy ID tự động được tạo trên bảng công ty và thả nó vào bảng Nhân viên (nhân viên) để có thể liên kết 2 bảng, NHIỀU nhân viên cho MỘT công ty. Nó hoạt động trên SQL 2008 DB của tôi, nên hoạt động trên SQL 2005 trở lên.
===========================
CREATE PROCEDURE [dbo].[InsertNewCompanyAndStaffDetails]
@comp_name varchar(55) = 'Big Company',
@comp_regno nchar(8) = '12345678',
@comp_email nvarchar(50) = 'no1@home.com',
@recID INT OUTPUT
- ' @recID' được sử dụng để giữ số ID được tạo tự động của Công ty mà chúng tôi sắp lấy
AS
Begin
SET NOCOUNT ON
DECLARE @tableVar TABLE (tempID INT)
- Dòng trên được sử dụng để tạo bảng tempory để giữ số ID được tạo tự động để sử dụng sau. Nó chỉ có một trường 'tempID' và kiểu INT của nó giống như '@recID' .
INSERT INTO comp(comp_name, comp_regno, comp_email)
OUTPUT inserted.comp_id INTO @tableVar
- ' ĐẦU RA được chèn. 'dòng trên được sử dụng để lấy dữ liệu từ bất kỳ trường nào trong bản ghi mà nó đang tạo ngay bây giờ. Dữ liệu này chúng tôi muốn là số tự động ID. Vì vậy, hãy chắc chắn rằng nó nói tên trường chính xác cho bảng của bạn, của tôi là 'comp_id' . Điều này sau đó được thả vào bảng tempory chúng tôi tạo ra trước đó.
VALUES (@comp_name, @comp_regno, @comp_email)
SET @recID = (SELECT tempID FROM @tableVar)
- Dòng trên được sử dụng để tìm kiếm bảng tempory mà chúng ta đã tạo trước đó trong đó ID chúng ta cần được lưu. Vì chỉ có một bản ghi trong bảng tạm thời này và chỉ có một trường, nên nó sẽ chỉ chọn số ID bạn cần và thả nó vào ' @recID '. ' @recID ' hiện có số ID bạn muốn và bạn có thể sử dụng số đó theo cách bạn muốn như tôi đã sử dụng dưới đây.
INSERT INTO staff(Staff_comp_id)
VALUES (@recID)
End
- Vậy em đi đây. Bạn thực sự có thể lấy những gì bạn muốn trong dòng 'OUTPUT được chèn.WhatEverFieldNameYouWant' và tạo những trường bạn muốn trong bảng tempory của bạn và truy cập nó để sử dụng bao giờ bạn muốn.
Tôi đã tìm kiếm một cái gì đó như thế này từ lâu, với sự cố chi tiết này, tôi hy vọng điều này sẽ giúp ích.
OUTPUT INSERTED.ID
có thể phát sinh sự cố trong trường hợp kích hoạt hoạt động trên bàn