Neg*_*sro 8 sql-server t-sql sql-server-2012
我的公司正在努力实施一个新的 HR 应用程序,以统一我们现有的 HR 流程。不过,我们遇到了一些症结;根据业务规则,Employee表的EmployeeID和SupervisorID列不能为空。但是,应用程序要求这些列可以为空,并且不会在将列设置为不允许为空时同步这些列。
建议的解决方案是创建一个视图,其中架构似乎允许列中存在空值,同时保留表以防止它们被输入到数据中。我并不完全相信这是可能的,而且我一直无法找到一种方法来做到这一点。这可能吗?如果没有,处理这种情况的最佳方法是什么?
小智 10
是的,这是可能的:
select Id, -- Remains as in table
cast(MandatoryIntCol as int) as [MandatoryIntCol], -- Makes nullable
isnull(OptionalIntCol, 0) as [OptionalIntCol] -- Makes mandatory
from dbo.MyTable;
Run Code Online (Sandbox Code Playgroud)
值得注意的是,这种方法有一些限制:
更改的列在视图中不可写,因此如果 OP 的应用程序尝试写入它们,它将失败。
应用程序不得试图区分表和视图。大多数应用程序没有,但令人讨厌的是,一些产品应用程序有。
| 归档时间: |
|
| 查看次数: |
6010 次 |
| 最近记录: |