Tôi đang cố gắng viết một thủ tục được lưu trữ để kiểm tra sự tồn tại của bản ghi và nếu nó không tồn tại, một lệnh chèn trả về SCOPE_IDENTITY
và nếu nó tồn tại, chỉ cần trả lại ID của đối tượng. Sau khi tôi nhận được thông tin này trong quy trình, tôi cần phải thực hiện tiếp tục xử lý và không chắc chắn về cách hoàn thành việc nhận được số SCOPE_IDENTITY
từ trong tuyên bố IF...ELSE
.Đặt biến thành SCOPE_IDENTITY bên trong câu lệnh IF
My hai bảng:
CREATE TABLE [dbo].[ActionTable] (
[ActionID] [int] IDENTITY(1, 1) NOT NULL,
[ObjectID] [int] NOT NULL,
[ActionName] [nvarchar](255) NOT NULL
)
CREATE TABLE [dbo].[ObjectTable] (
[ObjectID] [int] IDENTITY(1, 1) NOT NULL,
[ObjectName] [nvarchar](255) NOT NULL
)
Stored Procedure:
CREATE PROCEDURE [dbo].[SetAction]
@ActionName [nvarchar](255),
@ObjectName [nvarchar](255)
AS
DECLARE @ObjectID [int]
--I have tried the following
IF NOT EXISTS(SELECT ObjectID FROM ObjectTable WHERE ObjectName = @ObjectName)
INSERT INTO ObjectTable(ObjectName)VALUES(@ObjectName)
--Here I need to set @ObjectID = SELECT SCOPE_IDENTITY()
ELSE
SELECT @ObjectID = ObjectID FROM ObjectTable WHERE ObjectName = @ObjectName
này trả Incorrect syntax near the keyword 'ELSE'
Điều gì sẽ là phương pháp tốt nhất cho việc hoàn thành lookup này/chèn? Sau khi tôi nhận được ID sau đó tôi sẽ làm như sau
INSERT INTO ActionTable(ObjectID, ActionName) VALUES(@ObjectID, @ActionName)
SELECT SCOPE_IDENTITY()