首页 > 解决方案 > 如果另一列值为 false,则将列值设置为 null

问题描述

我正在使用 SQL Server Management Studio。我已经创建了一个数据类型为日期的表 [PatientsRecords]。在此表下,有一列 [DisChargedDate]。我刚刚添加了另一列 [IsDischarged],它的数据类型是位。我想做一些事情,以便每次插入 [PatientsRecords] 表时,如果 [IsDischarged] 值为 0(意味着患者还没有真正离开)。所以无论 [DisChargedDate] 的值是什么,它都会被设置为 null。

感谢你的帮助!

标签: sqlsql-serverdatabase

解决方案


我建议更改插入查询而不是使用触发器,因为它们可能会阻塞您的表,并且会减慢您的插入速度,而不会带来任何好处。

insert into dbo.PatientsRecords (DisChargedDate,IsDischarged)
select
IsDischarged
case when IsDischarged = 0 then null else DisChargedDate end as DisChargedDate
from YourSourceTable

如果您使用代码插入表中,则将上面的代码段包装到插入过程中,并从您的代码中调用它并传递必要的参数


推荐阅读