可以计算SQL默认值吗?
如果我有表FOO
与列数 - FOO.ID
,VARCHAR - FOO.LABEL
是有办法,我可以有SQL设置一个计算DEFAULT VALUE
为FOO.LABEL
要像“DFLT_LBL_” + FOO.ID
可以计算SQL默认值吗?
IE与记录ID
= 1将LABEL
设置为“DFLT_LBL_1”,并且具有ID
2的记录将LABEL
设置为“DFLT_LBL_2”等等。在所有数据库工作
一种方法是使用一个观点:
create view v_table as
select t.*, concat(label, id) as label
from foo t;
这不会让你去改变它。你可以在被称为像override_label
表中的列,其中有一个NULL
默认,然后看法是:
create view v_table as
select t.*, coalesce(override_label, concat(label, id)) as label
from foo t;
在一些数据库中,你可以做一个计算列类似的东西:
alter table foo add label as (coalesce(override_label, concat(label, id)));
是的,整个系统已经直接查看这个表,它仍然必须有能力更新到一个自定义值,只是如果它被插入为null,他们需要这个默认模式。我认为触发器将效果最好 –
@AdamJames。 。 。这显然是你的决定。我发现触发器很难维护,所以我更喜欢最后的解决方案,因为SQL Server支持计算列。 –
请用你正在使用的数据库标记你的问题。 –
您可以使用'插入触发器'之前。默认值意味着如果在插入时不为该列提供任何值,则插入默认值而不是null。所以在你的情况下,这些值不是默认值。它们应该基于'foo.id'派生,可以通过触发器来完成。 – Utsav