如何仅将列的一个值设置为 true 和 rest false
How to set only one value of column as true and rest false
我的数据库中有一个名为 PresentYear
的列,用于将特定年份设置为学校的学年。 2014-15。我添加了 default constraint
,它将所有值设置为 'N'
。在 assigncurrentyear
按钮上单击我想将其设置为 'Y'
并且当我将另一年设置为 PresentYear
之前设置的 PresentYear
应该重置为 'N'
并且仅table 中的一行应该有 'Y'
。我将通过 academicID
来设置 PresentYear
,我正在使用 stored procedure
来这样做,但我被困在这里了。
存储过程应该如何?
create PROCEDURE [dbo].[USP_SetAcademicYear]
@AcademicID INT
AS
BEGIN
IF(@AcademicID != 0)
BEGIN
UPDATE dbo.Academic_Master
SET presentYear = 'y'
WHERE AcademicId = @AcademicID
END
END
使用Not Equal To运算符:
UPDATE Academic_Master
SET presentYear='N'
WHERE AcademicId <> @AcademicID
更新:
所以你的存储过程看起来像这样
create PROCEDURE [dbo].[USP_SetAcademicYear]
@AcademicID INT
AS
BEGIN
IF(@AcademicID!=0)
BEGIN
update Academic_Master
set presentYear='y'
WHERE AcademicId=@AcademicID
UPDATE Academic_Master
SET presentYear='N'
WHERE AcademicId <> @AcademicID
END
END
只需更新需要更新的两行:
create PROCEDURE [dbo].[USP_SetAcademicYear]
@AcademicID INT
AS
BEGIN
IF(@AcademicID != 0)
BEGIN
UPDATE dbo.Academic_Master
SET presentYear = CASE
WHEN AcademicId = @AcademicID THEN 'y'
ELSE 'N' END
WHERE AcademicId = @AcademicID or presentYear = 'y'
END
END
我的数据库中有一个名为 PresentYear
的列,用于将特定年份设置为学校的学年。 2014-15。我添加了 default constraint
,它将所有值设置为 'N'
。在 assigncurrentyear
按钮上单击我想将其设置为 'Y'
并且当我将另一年设置为 PresentYear
之前设置的 PresentYear
应该重置为 'N'
并且仅table 中的一行应该有 'Y'
。我将通过 academicID
来设置 PresentYear
,我正在使用 stored procedure
来这样做,但我被困在这里了。
存储过程应该如何?
create PROCEDURE [dbo].[USP_SetAcademicYear]
@AcademicID INT
AS
BEGIN
IF(@AcademicID != 0)
BEGIN
UPDATE dbo.Academic_Master
SET presentYear = 'y'
WHERE AcademicId = @AcademicID
END
END
使用Not Equal To运算符:
UPDATE Academic_Master
SET presentYear='N'
WHERE AcademicId <> @AcademicID
更新: 所以你的存储过程看起来像这样
create PROCEDURE [dbo].[USP_SetAcademicYear]
@AcademicID INT
AS
BEGIN
IF(@AcademicID!=0)
BEGIN
update Academic_Master
set presentYear='y'
WHERE AcademicId=@AcademicID
UPDATE Academic_Master
SET presentYear='N'
WHERE AcademicId <> @AcademicID
END
END
只需更新需要更新的两行:
create PROCEDURE [dbo].[USP_SetAcademicYear]
@AcademicID INT
AS
BEGIN
IF(@AcademicID != 0)
BEGIN
UPDATE dbo.Academic_Master
SET presentYear = CASE
WHEN AcademicId = @AcademicID THEN 'y'
ELSE 'N' END
WHERE AcademicId = @AcademicID or presentYear = 'y'
END
END