Триггер SQL Server - сделать поле данных недоступным - PullRequest
0 голосов
/ 09 сентября 2018

Абсолютно новый для SQL Server - поэтому, пожалуйста, потерпите меня.

Я пытаюсь создать триггер, который должен пометить столбец данных (в моем случае BikeID) как недоступный при добавлении записи об аренде, которая ссылается на BikeID.

Это то, что я получил до сих пор, но не совсем уверен, как это сделать.

create trigger BikeUnavailable
on SA_Rental
after insert, update
as
begin
    declare @BikeID varchar(50)

    if exists(SELECT * FROM SA_Rental
        where bikeid = @BikeID)

    begin


end

Я думал о том, как сделать индекс недоступным или что-то совершенно пустым, о том, как это сделать.

Вся помощь очень ценится.

Заранее спасибо.

РЕДАКТИРОВАТЬ:

Так что после реализации предложения я продолжаю получать следующие ошибки:

enter image description here

Вот мой код триггера:

/****** Object:  Trigger [dbo].[BikeUnavailable]    Script Date: 
9/9/2018 2:05:33 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[BikeUnavailable]
on [dbo].[SA_Rental]
after insert, update
as
begin
    declare @BikeID varchar(50)

    --update the flag as unavailable in the main table 

    update SA_Bike
    set BikeID = 'Unavailable'
    where BikeId = inserted.BikeID


end

1 Ответ

0 голосов
/ 09 сентября 2018

Вы можете использовать логические таблицы (или магические таблицы) в SQL (inserted и deleted) для обновления поля в таблице, когда записи вставляются в таблицу SA_Rental.

Пример кода ниже:

create trigger BikeUnavailable
on SA_Rental
after insert, update
as
begin
    declare @BikeID varchar(50)

    --update the flag as unavailable in the main table 

    update *table_name*
    set *flag_column_name* = *'Unavailable'*
    where BikeId = inserted.BikeID

end

Подробнее Insight

...