SQL Server触发器-使数据字段不可用
对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
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”。