Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server触发器-使数据字段不可用_Sql_Sql Server_Indexing_Triggers_Sql Insert - Fatal编程技术网

SQL Server触发器-使数据字段不可用

SQL Server触发器-使数据字段不可用,sql,sql-server,indexing,triggers,sql-insert,Sql,Sql Server,Indexing,Triggers,Sql Insert,对SQL Server来说是全新的-所以请容忍我 我试图创建一个触发器,当添加引用BikeID的租赁记录时,该触发器应将数据列(在我的示例中为BikeID)标记为不可用 到目前为止,这就是我所得到的,但我不太确定如何去做 create trigger BikeUnavailable on SA_Rental after insert, update as begin declare @BikeID varchar(50) if exists(SELECT * FROM SA_R

对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
我一直在考虑如何让索引变得不可访问或是完全空白

非常感谢您的帮助

提前谢谢

编辑:

因此,在实施该建议后,我不断发现以下错误:

这是我的触发代码:

/****** 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

您可以使用SQL(
inserted
deleted
)中的逻辑表(又称魔术表)在将记录插入到SAU租赁表时更新表中的字段

示例代码如下:

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

嘿,谢谢你的回答。我已经在中添加了您的解决方案,它似乎工作正常,但我不断收到错误,它总是说我的列名无效?请提供您看到的错误和您正在使用的代码。我已将错误和代码添加到原始问题中作为屏幕截图。请你检查一下,让我知道你的想法。谢谢。更新后出现语法错误:use->update SA_rent set BikeID='Unavailable',其中BikeID=inserted.BikeID,但我认为您在获取SA_rent表中的一个条目后正在更新某个引用表。它仍然会给我'where子句'的错误,其中显示:多部分标识符“inserted.BikeID”无法约束。我指的是一个实际的SA_Bike表,SA_Rental表包含作为“外键”的BikeID。请将您的代码作为文本发布并正确格式化-不要发布代码截图!!更新的语法是updatetablename set columnname各位,谢谢你们的回复。我已将编辑后的代码粘贴为text@P.Salmon,现在我已将表名作为“update”,但下面的“where子句”仍然有一个错误,它表示:无法绑定多部分标识符“Inserted.BikeID”。