如何根据条件更新字段

时间:2015-10-30 10:24:27

标签: sql sql-server-2008

我写了如下的商店程序,

INSERT INTO Slider
  (
    SliderID
   ,SliderTitle
   ,SliderDescription
   ,SliderImage
   ,BackgroundImage
   ,IsBackgroundEnabled
   ,PageName
   ,IsEnabled
   ,CreatedOn
  )
VALUES
  (
    NEWID()
   ,@SliderTitle
   ,@SliderDescription
   ,@SliderImage
   ,@BackgroundImage
   ,@IsBackgroundEnabled
   ,@PageName
   ,@IsEnabled
   ,GETDATE()

现在我希望如果slider表中有多个记录,并且当前添加记录的@IsBackgroundEnabled属性为真,则为1,则所有其他记录为{{ 1}}属性应该变为false或0。

注意:当前添加的记录@IsBackgroundEnabled应该是真的。

请帮助我!!

2 个答案:

答案 0 :(得分:1)

在插入语句之前添加此更新语句:

IF @IsBackgroundEnabled = 1
UPDATE Slider 
SET IsBackgroundEnabled=0 

然后添加您的插入语句

答案 1 :(得分:0)

为此,您可能需要在Slider表上创建触发器,如下所示

CREATE TRIGGER SliderAfterInsert
ON [dbo].[Slider]
FOR  INSERT
AS
    DECLARE @latest AS INT 
    SET @latest = (
            SELECT TOP 1 IsBackgroundEnabled
            FROM   [Slider]
            WHERE  IsBackgroundEnabled = 1
            ORDER BY
                   CreatedOn
        )

    IF (@latest IS NOT NULL AND @latest<>0)
    BEGIN
        UPDATE Slider
        SET    IsBackgroundEnabled     = 0
        WHERE  CreatedOn               = GETDATE()
        PRINT 'SliderAfterInsert trigger fired.'
    END
GO

这肯定会对你有所帮助。