I need a little help with a trigger.
Where I'm in wrong:
CREATE TRIGGER [dbo].[tr_ins_MyTriggerName]
ON [dbo].MyTableName
FOR INSERT
AS
DECLARE
@Number nvarchar(20) ,
@Date datetime ,
@Supplier nvarchar(12);
SET @Number = (SELECT Number FROM INSERTED);
SET @Date = (SELECT Date FROM INSERTED);
SET @Supplier = (SELECT Supplier FROM INSERTED);
BEGIN
IF EXISTS (
SELECT TOP 1 1 FROM MyTableName x
WHERE x.Number = @Number
AND x.Date = @Date
AND x.Supplier = @Supplier
)
BEGIN
RAISERROR ('There is the same Number for the same Supplier!' ,11,1)
ROLLBACK
END
END
This trigger runs in all cases even the the EXITS
is not true!
Best Answer
I'd suggest you to create a unique index on the 3 columns, i.e. date / number / supplier.
If this is not applicable, I'd say you modify your trigger as follows
However, this trigger is problematic when you insert multiple values in one insert statement.