更新表值之后,这是我的代码我在我的触发变老StartDateUtc和EndDateUtc二更新后触发没有得到在触发
当我更新了我的价值的工作不错,但第二次的取旧值首次 请给我一些建议吧
IF EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[NewsUpdateTrigger]'))
DROP TRIGGER [dbo].[NewsUpdateTrigger]
GO
CREATE TRIGGER [dbo].[NewsUpdateTrigger]
ON [dbo].[News]
FOR UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @EntityId INT
DECLARE @EntityName varchar(Max)
DECLARE @IsPublish bit
DECLARE @LanguageId int
DECLARE @StoreId int
DECLARE @InTime Datetime
SELECT @EntityName='News'
DECLARE @StatDate DateTime
DECLARE @EndDate DateTime
SELECT @EntityId = DELETED.Id FROM DELETED
SELECT @IsPublish = DELETED.Published FROM DELETED
SELECT @StatDate= DELETED.StartDateUtc FROM DELETED
SELECT @EndDate= DELETED.EndDateUtc FROM DELETED
IF EXISTS (SELECT * FROM Incremental_Solr_Custom where EntityName='News' and EntityId = @EntityId)
BEGIN
--If StartDateUtc and EndDateUtc expire Manually Set the is Publish=False
IF EXISTS (SELECT * FROM DELETED WHERE StartDateUtc NOT BETWEEN Cast(GETDate() as date) AND Cast(GETDate() as date)
AND Cast(GETDate() as date) NOT BETWEEN StartDateUtc AND EndDateUtc)
BEGIN
UPDATE Incremental_Solr_Custom SET SolrStatus =1,IsPublish=0 WHERE EntityId = @EntityId AND EntityName='News';
Insert into TriggerTesterTable(ErrorMethodName)values(' If StartDateUtc and EndDateUtc expire Set the is Publish=False '+ cast(@StatDate as varchar) + ' '+cast(@EndDate as varchar))
END
--StartDate and EndDate is Not expire Get From News Table
IF EXISTS (SELECT * FROM DELETED WHERE StartDateUtc BETWEEN Cast(GETDate() as date) AND Cast(GETDate() as date)
OR Cast(GETDate() as date) BETWEEN StartDateUtc AND EndDateUtc)
BEGIN
SELECT @IsPublish = DELETED.Published FROM DELETED
UPDATE Incremental_Solr_Custom SET SolrStatus =1,[email protected] WHERE EntityId = @EntityId AND EntityName='News';
Insert into TriggerTesterTable(ErrorMethodName)values('StartDate and EndDate is Not expire Get IsPublish from News '+cast(@StatDate as varchar) + ' '+cast(@EndDate as varchar));
END
END
END
触发器是**供应商高度特异性** - 所以请添加标签到指定是使用了'mysql','postgresql' ,'sql-server','oracle'或'db2' - 或者其他的东西。 –
那么我怎么能从更新表中获取值而不使用已删除 –