根据另一个T-SQL语句自动填充列

时间:2016-08-22 15:24:07

标签: sql sql-server database tsql database-administration

抱歉再次打扰你。哈哈:)

我正在查看类似问题的答案,但它们仍然没有太大帮助。

这是我的理由:

enter image description here

我想更改表格中的架构以自动填充一列。

据我所知,更新功能仅适用于值,并且在将来输入新值时不适用。

我希望能够根据等级设置Gname,以便我可以拥有。所以我可以有1个新手或新手,2个用于标准,3个中级和4个专家。

有人可以帮忙吗?或指导我找到正确的文件。

谢谢大家

1 个答案:

答案 0 :(得分:3)

通常可以通过使用查找表来完成。

因此,您将拥有自己的表格,然后为Gname添加另一个表格,该表格将带有等级Id 1,2,3,4和名称。然后,当您想将其作为列添加到查询中时,您可以通过将您的gname表与ID上的表一起加入。

但是,由于sql-server 2008还有一个计算列https://msdn.microsoft.com/en-us/library/ms188300(v=sql.105).aspx

如果你想制定计算列,你可以改变你的表并添加它。

ALTER TABLE TableName
ADD ComputedColumnName AS (CASE WHEN Grade = 1 THEN 'novice' WHEN Grade = 2 THEN 'standard'.....END)

一些程序员使用的另一种方法是不将查找放在数据库中的任何位置,而是在其应用程序层中使用枚举来处理翻译。

第一种方法是减少数据库中存储空间的需求,并且不需要更改架构/表定义来重命名或添加其他gnames。此外,它还会带来更多的数据完整性,因为我看到枚举会破坏一个非常重要的电子商务网站,并导致程序员在尝试调试时遇到很多麻烦。