如果 SQL 服务器中不存在,则插入事务

Insert transaction if not exists in SQL Server

我想在 table 中插入只有当我没有特定列时它是一首具有不同标题的曲目 table 我想用一个程序添加不同的标题我做了试试 catch,我的 where not exists 条件有问题,我不知道把 values 术语放在哪里:

BEGIN TRANSACTION [Tran1]
BEGIN TRY

INSERT INTO  [s15guest59].[dbo].[track](track_topic)
values(@par1)
   WHERE NOT EXISTS (SELECT track_topic FROM [track]
                     WHERE track_topic=@par1)
COMMIT TRANSACTION [Tran1]
END TRY
BEGIN CATCH
  ROLLBACK TRANSACTION [Tran1]
END CATCH  

GO

我不知道在中间写什么才能让它工作

Msg 137, Level 15, State 2, Line 2
Must declare the scalar variable "@par1".

如果您打算使用存储过程,您可以创建存储过程:

    CREATE PROCEDURE spAddTrack 
@trackName VARCHAR(MAX)

AS

If not exists( Select * from [s15guest59].[dbo].[track] where track_topic=@trackName)
BEGIN
    INSERT INTO  [s15guest59].[dbo].[track](track_topic) VALUES (@trackName)
END

感谢执行:

EXEC spAddTrack 'this is new track'