gpt4 book ai didi

使用存储过程的具有唯一约束的 SQL 插入

转载 作者:行者123 更新时间:2023-12-02 08:38:49 25 4
gpt4 key购买 nike

这是一个带有具体示例的通用问题。

我有一个包含三个字段(流派 ID (PK IDENTITY)、流派和子流派)的表。该表对(流派,子流派)组合具有唯一约束。

我想知道如何修改存储过程以在表中不存在时插入,否则返回现有类型的 genreID(如果存在)。

CREATE PROCEDURE spInsertGenre
@genreID int OUTPUT,
@genre varchar(100),
@subGenre varchar(100)= NULL
AS
BEGIN
INSERT INTO Genre
(
genre,
subGenre
)
Values (
@genre,
@subGenre
)

SELECT @genreID = SCOPE_IDENTITY()
END
GO

最佳答案

您可以尝试在执行插入之前选择您的 SP 将插入的行:

CREATE PROCEDURE spInsertGenre
@genreID int OUTPUT,
@genre varchar(100),
@subGenre varchar(100)= NULL
AS
BEGIN
-- if the row to be inserted already exists, put the genreID into the @genreID output parameter
SELECT @genreID = genreID
FROM Genre
WHERE genre = @genre
AND subGenre = @subGenre

IF @genreID IS NULL -- if the genreID was not found, do an insert and select the new genreID to the @genreID output parameter
BEGIN
INSERT INTO Genre
(
genre,
subGenre
)
Values (
@genre,
@subGenre
)

SELECT @genreID = SCOPE_IDENTITY()
END
END
GO

关于使用存储过程的具有唯一约束的 SQL 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18649412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com