sql-server - SQL Server 2017 触发器 - 声明变量
问题描述
今天第一次做SQL Server,平时用的是MySQL。
我做了一些搜索,但是,我就是不明白。
这是代码:
CREATE TRIGGER "PREMI_after_insert"
ON "PREMI"
AFTER INSERT
AS
DECLARE @umur INT
SELECT
@umur = DATEDIFF(YEAR, CAST(GETDATE() AS DATE),
(CASE
WHEN ISNUMERIC(SELECT NoTerdaftar FROM inserted) = 1
THEN (SELECT CAST(TglLahir AS DATE)
FROM KARYAWAN
WHERE NoPegawai = (SELECT NoTerdaftar FROM inserted))
ELSE (SELECT CAST(TglLahir AS DATE)
FROM KELUARGA
WHERE NoPeserta = (SELECT NoTerdaftar FROM inserted))
END))
DECLARE @plafond DECIMAL(20,0)
SELECT @plafond = (CASE
WHEN ISNUMERIC(SELECT NoTerdaftar FROM inserted) = 1
THEN (SELECT Plafond
FROM KARYAWAN
WHERE NoPegawai = (SELECT NoTerdaftar FROM inserted))
ELSE (SELECT Plafond
FROM KELUARGA
WHERE NoPeserta = (SELECT NoTerdaftar FROM inserted))
END)
DECLARE @rat DECIMAL(7,6)
SELECT @rat = RE.Rate
FROM RATES RE
WHERE RE.KodeAsuransi = (SELECT JenisAsuransi FROM ASURANSI
WHERE Id = (SELECT ID_Asuransi FROM inserted))
AND @umur BETWEEN RE.UsiaMin AND RE.UsiaMax
BEGIN
UPDATE PREMI
SET JumlahPremi = (@plafond * @rat)
WHERE Id = (SELECT Id FROM insterted)
END;
这就是错误
请不要欺负我,该代码是我在阅读大量其他线程后得到的......
我只是不明白 SQL Server 中触发器的结构。
有些使用“GO”字,有些甚至不使用 BEGIN 和 END,这是 MySQL 中的关键......
解决方案
推荐阅读
- java - 在 java 中实际上是如何检测到文件结束的?
- javascript - TypeError:无法读取集合运行器中未定义的属性“0”
- java - 如何使用 Makefile 编译单个 Java 文件?
- javascript - 域更改后平移缩放
- pandas - Pandas 按列表中的值分配数据框名称
- node.js - 突然,猫鼬开始对所有查询返回 null
- node.js - 未处理的承诺拒绝:TypeError:网络请求失败的博览会文件上传
- github - 无法将spring boot应用程序存储库从github推送到heroku
- java - Micronaut @Value 在运行原生镜像时没有获取环境变量
- python - 如何删除python中编号列表的最后一个元素的尾随换行符?