簡體   English   中英

觸發 INSERT 以驗證 SQL 服務器中的輸入數據?

[英]Trigger for INSERT to validate input data in SQL Server?

我的問題:

表 dbo.student 有 'StudentID' 像 'SV001'。 如何創建觸發器來檢查數據插入 dbo.student 的“StudentID”以“SV”開頭,數字在 000 到 100 之間。

示例:“SV099”是要插入的有效 ID,“SV101”無效

使用SQL constraints

CHECK (CAST(SUBSTRING(StudentID,3,LEN(StudentID)) AS int) <= 100)

例子:

create table tb(StudentID varchar(10) CHECK (CAST(SUBSTRING(StudentID,3,LEN(StudentID)) AS int) <= 100));
//test data
insert into tb values('sv000');  //valid
insert into tb values('sv100');  //valid
insert into tb values('sv101');  //invalid

db<>fiddle中的演示

或者如果你想使用Trigger

注意:必須使用inserted關鍵字才能訪問剛剛添加的記錄

 Create Trigger TriggerStudentID
    On tb
    AFTER INSERT 
    As
    Begin
        Declare @StudentID varchar(10);
        SET @StudentID = (Select TOP 1 StudentID From inserted);
        If (CAST(SUBSTRING(@StudentID,3,LEN(@StudentID)) AS int) > 100)
           RollBack Transaction
    END

db<>fiddle中的演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM