C# 插入后创建触发器

C# 插入后创建触发器,c#,sql-server-2008,triggers,C#,Sql Server 2008,Triggers,在我的表格中,除其他字段外,还有以下字段 Email UpperEmail 我应该创建触发器,将UpperEmail字段中的Email值转换为大写字母。如何做到这一点?我建议您创建一个计算列,而不是为UpperEmail单独设置一列。对于计算列,不需要使用触发器 例: 我建议您创建一个计算列来完成此操作,而不是为UpperEmail创建单独的列。对于计算列,不需要使用触发器 例: 作为替代解决方案,您是否考虑过使用不区分大小写的排序规则将电子邮件地址存储在列中?我这样问是因为当我看到有人关心

在我的表格中,除其他字段外,还有以下字段

Email 
UpperEmail

我应该创建触发器,将
UpperEmail
字段中的
Email
值转换为大写字母。如何做到这一点?

我建议您创建一个计算列,而不是为UpperEmail单独设置一列。对于计算列,不需要使用触发器

例:


我建议您创建一个计算列来完成此操作,而不是为UpperEmail创建单独的列。对于计算列,不需要使用触发器

例:


作为替代解决方案,您是否考虑过使用不区分大小写的排序规则将电子邮件地址存储在列中?我这样问是因为当我看到有人关心
上限(值)
下限(值)
时,他们可以不区分大小写的方式进行比较。

作为一种替代解决方案,您是否考虑过使用不区分大小写的排序规则将电子邮件地址存储在列中?我这样问是因为当我看到有人关心
up(value)
LOWER(value)
时,他们可以不区分大小写的方式进行比较。

您是否尝试编写代码?您是否有任何错误?您还可以计算名为UpperEmail的列,它只是
UPPER(Email)
如果您不想使用触发器(替换实时计算的触发器/存储成本),您是否尝试编写任何代码?您是否有任何错误?您也可以计算名为UpperEmail的列,它只是
UPPER(Email)
如果您不想使用触发器(替换即时计算的触发器/存储成本),我也喜欢这个想法,但这是一次性处理的折衷办法&增加存储空间,还是处理每次读取的数据。@AdamWenger,如果需要处理时间,可以将数据保留在列中。就个人而言,整个问题都回避了一个问题:“为什么?”。为什么要存储列的大写版本,尤其是当数据可能很大时。在大多数情况下,开发人员认为这对于搜索数据是必要的。实际情况是,默认情况下SQL Server不区分大小写。如果您碰巧使用区分大小写的排序规则,您可以在where子句中放置一个collate子句,这将需要更少的空间,而且性能更好。关于持久化计算列的要点非常好-您的其他要点也很好。我也喜欢这个想法,但这是一次性处理的折衷办法&增加存储空间,还是处理每次读取的数据。@AdamWenger,如果需要处理时间,可以将数据保留在列中。就个人而言,整个问题都回避了一个问题:“为什么?”。为什么要存储列的大写版本,尤其是当数据可能很大时。在大多数情况下,开发人员认为这对于搜索数据是必要的。实际情况是,默认情况下SQL Server不区分大小写。如果您碰巧使用区分大小写的排序规则,您可以在where子句中放置一个collate子句,这将需要更少的空间,而且性能也会更好。关于持久化计算列,这一点非常好——您的其他点也很好。
Alter Table YourTableName Add UpperEmail As Upper(Email)