开发者社区> 问答> 正文

SQL Server触发器,如果​​其中一列的值尚未在表中,则停止将行添加到表中

我在SQL Server中有一个表,该表具有以下四列:

ID_Number
Firstname
Lastname
Group

如果要添加的行包含表的“组”列中不存在的值,则我需要一个触发器,该触发器不允许将新行添加到该表中。理想情况下,触发器还将创建一条错误消息(可能使用RAISERROR命令),该消息将突出显示以下事实:要添加的行包含数据库中尚未存在的“组”列的值。

我是T-SQL的新手,对于此问题的任何帮助将不胜感激。

展开
收起
祖安文状元 2020-01-03 16:31:04 539 0
1 条回答
写回答
取消 提交回答
  • 3

    您做错了。您需要一个单独的组表(group由于它是SQL保留字,因此名称不正确)。我建议:

    create table groups (
        group_id int identity(1, 1) primary key,
        group_name varchar(255) not null unique
    );
    
    create table <whatever> (
        id_number int identity(1, 1) primary key,
        first_name varchar(255),
        last_name varchar(255),
        group_id int not null,  -- has to be defined
        constraint fk_group_id foreign key (group_id) references groups(group_id)
    );
    
    

    瞧!每行必须有一个组。并且必须已定义该组。

    2020-01-03 16:31:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载