sql-server - SQL Server 在第一次插入时触发双精度值
问题描述
我创建了一个触发器Ames.Details
来触发,Ames.Sqlclass
但是当我将数据插入到Ames.Details
'Ken'、'Math'、20、'In' 时,它会在Sqlclass.Syntax
下面的 ** 中显示 40 分
CREATE SCHEMA Ames
GO
CREATE TABLE Ames.SqlClass
(
Name NVARCHAR(50),
Subject NVARCHAR(50),
Mark INT
)
GO
CREATE TABLE Ames.Details
(
Name NVARCHAR(50),
Subject NVARCHAR(50),
Mark INT,
Status NVARCHAR(20)
)
GO
CREATE TRIGGER SQlDetails
ON Ames.Details
AFTER INSERT
AS
BEGIN
DECLARE @st INT, @Namesql NVARCHAR(50),
@Subject NVARCHAR(50), @pt INT, @Status NVARCHAR(20)
SELECT
@Namesql = i.Name, @Subject = i.subject,
@pt = i.mark, @Status = I.Status
FROM
inserted AS I
IF NOT EXISTS (SELECT * FROM Ames.SqlClass
WHERE @Namesql = Name AND @Subject = Subject)
BEGIN
INSERT INTO Ames.sqlClass (Name, Subject, Mark)
VALUES (@Namesql, @Subject, @pt)
END
SELECT @st = Mark
FROM ames.SqlClass
WHERE @Namesql = Name AND @Subject = Subject
BEGIN
IF @Status = 'IN'
BEGIN
SET @st = @st + @pt
END
IF @Status = 'Out'
BEGIN
SET @st = @st - @pt
END
UPDATE Ames.SqlClass
SET Mark = @st
WHERE Name = @Namesql
END
END
解决方案
推荐阅读
- npm - 为什么我必须运行两次“npm install”才能成功安装我的包
- c++ - SetWinEventHook 的 WINEVENT_SKIPOWNPROCESS 并没有真正起作用
- java - Undertow 服务器何时提供 org.xnio.XnioWorker#taskPool?
- asp.net-mvc - 表单帖子上的复杂 ViewModel 为空
- javascript - 通过谷歌应用脚本授予谷歌驱动器上的文件访问权限
- ethereum - 如何向业主地址付款?
- excel - 在重新激活工作簿时执行操作
- java - 为什么调用数组的位置比调用变量更糟糕
- r - 如何编写此 R 计数查询?
- sql-server - SQL Server 2008 R2 - 传递的长度参数无效