如果 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'
我想在 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'