sql - 在 SQL Server 中为名字和姓氏的第一个字母创建触发器
问题描述
我想写一个触发器,它会在名字和姓氏中从小写变为大写。在我的表 klient 中,imie = name 和 nazwisko = surname。如何在 SQL Server 中做到这一点?
CREATE TABLE [dbo].[klient]
(
[id_klient] [int] IDENTITY(1,1) NOT NULL,
[id_silownia] [int] NOT NULL,
[imie] [varchar](50) NOT NULL,
[nazwisko] [varchar](50) NOT NULL,
[telefon] [varchar](50) NULL,
)
解决方案
你需要这样的东西:
-- create the trigger, on table "klient", after insert
CREATE TRIGGER trg_uppercase
ON dbo.klient
AFTER INSERT
AS
BEGIN
-- update the table dbo.Klient
UPDATE k
-- set "imie" to be first letter in UPPER(), rest as is
SET imie = UPPER(SUBSTRING(i.imie, 1, 1)) + SUBSTRING(i.imie, 2, 999),
nazwisko = UPPER(SUBSTRING(i.nazwisko, 1, 1)) + SUBSTRING(i.nazwisko, 2, 999)
FROM dbo.klient k
-- join with "pseudo-table" Inserted to update only what was freshly inserted
INNER JOIN Inserted i ON k.id_klient = i.id_klient;
END
这仍然有一些“粗糙的边缘”需要解决 - 例如,如果您的名字超过 999 个字符怎么办?它将如何处理NULL
插入的值?
但这应该是一个不错的起点,可以了解如何编写触发器以及可以用它们做什么。
推荐阅读
- python-3.x - 在 python 中制作 djangorestapi 时如何在模型中创建可选字段?
- c# - 如何在winforms文本框中获取默认垂直滚动条的位置
- reactjs - Victory Charts:深入研究 fixLabelOverlap 道具以获得反应图表的胜利库
- plsqldeveloper - oracle 应用程序中自定义表和种子表之间的区别
- svg - SVG 图像下载 URL 链接在 Xamarin 表单中的 FFImageLoading 中不起作用
- kubernetes - 为 helm 的 gcp 服务帐户创建密钥
- python - 如果我们扩展或减少同一模型的层,我们仍然可以从 Pytorch 中的预训练模型进行训练吗?
- permissions - 使用 Certutil 的 ImportPfx 不授予任何适当的权限
- flutter - Flutter DropdownButton 出现错误
- php - 根据 WooCommerce 购物车中的商品数量和产品类别禁用支付网关