У меня есть транзакция, чтобы проверить, имеет ли запись в моей таблице ту же дату и subHistoryID
.Независимо от того, совпадают данные или нет, транзакция всегда откатывается.Любая помощь по этому вопросу была бы отличной.
BEGIN TRANSACTION [Tran1]
INSERT INTO History(Name, subHistoryID, GarageID, StaffID, Date, Notes)
VALUES (@name, @subhistoryid, @garageid, @staffid, @date, @notes);
IF EXISTS (SELECT * FROM History
WHERE History.Date = @date AND History.subHistoryID = @subhistoryid)
BEGIN
ROLLBACK TRANSACTION [Tran1]
PRINT 'ERROR: Rolling back transaction.'
END
ELSE
BEGIN
PRINT 'PASS: Committing transaction.'
COMMIT TRANSACTION [Tran1]
END
GO
Мои данные перед попыткой транзакции.
DECLARE @name varchar(20) = NULL;
DECLARE @subhistoryid int = 1;
DECLARE @garageid int = 1;
DECLARE @staffid int = 1;
DECLARE @date Date = '2018-10-21';
DECLARE @notes varchar(100) = 'test';
Эти данные должны откатиться, что делает.
DECLARE @name varchar(20) = NULL;
DECLARE @subhistoryid int = 1;
DECLARE @garageid int = 1;
DECLARE @staffid int = 1;
DECLARE @date Date = '2016-1-1';
DECLARE @notes varchar(100) = 'test';
Эти данные должны зафиксироваться, но они откатываются