根据另一列设置默认值?

Posted

技术标签:

【中文标题】根据另一列设置默认值?【英文标题】:Set a default value based on another column? 【发布时间】:2018-09-09 05:15:33 【问题描述】:

我有带有列的表 Employee

IdEmp int 非空主键, PhotoEmp 图片默认 'D:\Avatars\maleSilhouette.png', GenderEmp nchar(1) 检查 GenderEmp in ('M','F')

因此,每次我插入 EMPLOYEE (IdEmp,GenderEmp) 值 ('1001','M') 时,此脚本默认存储男性图像(无论性别),但 我想存储女性剪影 (D:\Avatars\femaleSilhouette.png) 如果性别是“F”

【问题讨论】:

为什么首先在数据库中放置一个默认占位符?对于没有上传自己照片的用户,存储 null 不是更好吗? 如果有员工照片怎么办? 【参考方案1】:

您可以将您的 PhotoEmp 列设为计算列,并按如下方式设置值:

ALTER TABLE dbo.Employee ADD PhotoEmp AS CAST
(
  CASE
  WHEN GenderEmp = 'M' THEN 'D:\Avatars\maleSilhouette.png' 
  ELSE 'D:\Avatars\femaleSilhouette.png'
  END AS image
)
GO 

【讨论】:

谢谢。我只是用其他数据类型对其进行了测试,它确实有效。【参考方案2】:

您可以使用虚拟列来实现这一点。但是之后您将无法在该列中插入任何其他值。你会得到 ORA-54013。

【讨论】:

以上是关于根据另一列设置默认值?的主要内容,如果未能解决你的问题,请参考以下文章

我可以将列的默认值设置为同一表中同一行上另一列的字符串吗?

PostgreSQL - 根据另一个单元格值设置默认单元格值

Clickhouse - 添加一个新列,默认值基于另一列

火花滞后与默认值作为另一列

根据另一列熊猫设置列等于值

根据另一列的另一个值和/或另一行中的同一列更新设置值:-ORA 1427