首页 > 解决方案 > 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

标签: sql-server

解决方案


推荐阅读