Я новый разработчик SQL. После рекомендаций я изменил свой триггер (для этой задачи мне нужно использовать триггер, поэтому я не могу его избежать), но я изменил свой триггер. Я хочу, чтобы он предотвращал дублирование в таблице Rentals
внешнего ключа BikeID
, содержащегося в нем.
Это мой код на данный момент:
CREATE TRIGGER BikeNotAvailable
ON dbo.SA_Rental
AFTER INSERT
AS
IF EXISTS (SELECT *
FROM SA_Rental
INNER JOIN inserted i ON i.BikeID = dbo.SA_Rental.BikeID)
BEGIN
ROLLBACK
RAISERROR ('This bike is already being hired', 16, 1);
END
go
Но когда я ввожу BikeID
в таблицу Rentals
, хотя BikeID
еще не присутствует в строке, это все равно вызывает ошибку - почему? (Я также проверил это на пустой таблице, и это все еще вызывает ошибку)
Просто некоторый контекст моих данных, BikeID
- это первичный ключ из таблицы 'Bike', который используется в качестве внешнего ключа для таблицы Rentals
, не уверен, что это как-то связано с ошибкой.
Может кто-нибудь помочь мне исправить этот триггер, чтобы он работал.
Спасибо.