数据库

简介: 断言以及触发器

4.完整性约束命名子句

1.创建

constraint 约束名 约束条件


Sage numeric(3)
    constraint C1 check(Sage < 30)
    
constraint Student_Key primary key(Sno)

2.修改

alter table Student
    drop constraint 名字
    
alter table Student
    add constraint 名字 约束条件

5.域的完整性限制

1.创建

create domain 域名 域的数据类型
    条件

create domain SEX_DOMAIN char(2)    //建立一个性别域
    check (value in ('男','女'))
后序建立性别时可以直接 : Ssex SEX_DOMAIN

6.断言

1.创建

create assertion  断言名 check()子句

数据库课程最多60名同学选修
create assertion ASS_SC 
    check(60>=select count(*)
               from Course,SC
               where SC.Cno=Course.Cno and Course='数据库')

2.删除

drop assertion 断言名

7.触发器

只有创建表的用户才能创建触发器
创建只有一个执行语句的触发器:

create trigger 触发器名                            
                            
before/after 触发事件            //before/after是触发的时机,before是触发事件执行之前激活触发器,after是事件之后激活
                                触发事件:insert(插入),delete(删除),update(修改),insert or delete(二者结合),
                                update of<列名> (修改某列的值)
on 表名

【referencing new/old row as 变量】        //行级触发器时,用户可以在执行语句中使用new和old
                                        new:是update/insert事件之后的新值
                                        old:是update/dlelte事件之前的旧值
                                        例子:
                                        referencing
                                            new row as newname(变量名)
                                            old row as oldname(变量名)
                                        
for each(row/statement)            //触发器类型,row行级触发器
                                            statement语句级触发器

[when 触发条件]执行语句                //当触发条件为真时,执行触发语句。可省略
statement语句级触发器:是删除/修改这个事件本身激活了触发器,跟删几个/修改几个数据没有关系

row行级触发器:当修改或删除多条记录时会触发多次,

而且如果数据没有被修改/删除,即使执行了修改/删除操作都不会激活触发器

创建有多条执行语句的触发器:

create trigger 触发器名
before/after 触发事件
on 表名
for each row
begin
    执行语句
    if(new.job='教授')and(new.sal<4000)
        then new.sal:=4000;
    end if;
end
如果一个表上有多个触发器激活,其执行顺序:

1. 执行该表上的before触发器

2.激活触发器的SQL语句

3.执行该表上的after触发器

如果等级一样,谁先创建谁先执行

删除触发器

drop trigger 触发器名 on 表名
目录
相关文章
|
11月前
|
存储 缓存 Java
Spring面试必问:手写Spring IoC 循环依赖底层源码剖析
在Spring框架中,IoC(Inversion of Control,控制反转)是一个核心概念,它允许容器管理对象的生命周期和依赖关系。然而,在实际应用中,我们可能会遇到对象间的循环依赖问题。本文将深入探讨Spring如何解决IoC中的循环依赖问题,并通过手写源码的方式,让你对其底层原理有一个全新的认识。
254 2
|
11月前
|
运维 测试技术 持续交付
代码管理的艺术:你的团队是否还在为 Git 分支管理头疼?
本文回顾了作者从2~3人初创团队到百人技术团队的经历,分享了代码管理工具从无到SVN再到Git的演变。重点介绍了Git Flow和GitHub Flow两种常用的Git分支管理模型,分析了它们的适用场景和优缺点。Git Flow适合中大型项目,而GitHub Flow则更适合小型团队和Web应用开发。
323 0
|
监控 DataX
DataX教程(09)- DataX是如何做到限速的?
DataX教程(09)- DataX是如何做到限速的?
1040 0
DataX教程(09)- DataX是如何做到限速的?
|
Java 数据库连接 mybatis
【已解决】nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘qcBizname‘ not found
【已解决】nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘qcBizname‘ not found
1070 0
|
安全 网络安全 数据安全/隐私保护
2023年中职“网络安全“—网络安全应急响应
2023年中职“网络安全“—网络安全应急响应
292 0
|
Java Maven 数据安全/隐私保护
基于jib-maven-plugin快速构建微服务docker镜像
本文介绍基于 Maven 插件 jib-maven-plugin 实现快速构建 Spring Boot 程序镜像,并推送到远程仓库中,且无需安装 Docker 环境 。
903 0
基于jib-maven-plugin快速构建微服务docker镜像
|
存储 网络协议 网络性能优化
TCP 滑动窗口详解(非常实用)
TCP 滑动窗口详解(非常实用)
|
存储 网络安全 开发工具
iOS如何上传自己的sdk到cocoapods并用pod管理
在Github上创建存储库(前提是得有一个Github账号,如果没有就注册一个)
650 0
iOS如何上传自己的sdk到cocoapods并用pod管理
|
算法
括号匹配那个小题真不简单……
括号匹配那个小题真不简单……
247 0
括号匹配那个小题真不简单……
|
SQL 安全
35分钟了解sql注入-盲注(三)
🍀学习sql注入之盲注操作
729 0
35分钟了解sql注入-盲注(三)