侧边栏壁纸
  • 累计撰写 781 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

约束 触发器

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 112 阅读 / 1,944 字
温馨提示:
本文最后更新于 2022-04-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

索引
唯一性索引
create unique index name on tableName(columnName)
非聚集索引
create nonclustered index name on tableName(columnName)
复合唯一索引
create unique index name on tableName(columnName1,columnName2)
查看索引
sp_helpindex tableName
重命名
sp_rename '图书信息.book_index','book_ind'
删除
drop index book_ind on 图书信息
规则
创建
create rule ruleName as @columnName in (1,0) 创建和绑定之间加个go
绑定
sp_bindrule ruleName,'tableName.columnName'
解绑
sp_unbindrule 'tableName.columnName'
重命名
sp_rename 不带引号的旧名,不带引号的新名
删除
drop rule ruleName
查看
sp_help ruleName 查看规则的owner type createtime sp_helptext ruleName 查看规则的详细定义信息
默认值
create default df_date as '2015-9-1' go sp_bindefault df_date,'读者_备份.办卡时间'
sp_unbindefault '读者_备份.办卡时间' go drop default df_date
约束
默认
alter table .. add constraint default '男' for sex
唯一
alter table .. add constraint unique(identity)
主键
alter table .. alter constraint key_name primary key(column_name)
联合主键
alter table .. alter constraint key_name primary key(column1,column2)
外键
alter table .. alter constraint foreign key(..) references ..(..)
非空
alter table 读者信息 alter column 借阅证件类型 varchar(10) not null
check
alter table .. alter constraint ..name check (办卡时间>'2010-1-1')
删除约束(包括 primary key ,check,rule,null,default)
sp_help tableName 查看表上都有哪些约束 并找到要删除的约束的名字 alter table tableName drop constraint 约束的名字 单独定义过的约束,就是名字是自己起的约束,这样做是解绑; 对于系统自动生成的名字,这样做是删除.
触发器
可以用于数据处理(根据提供的一些信息 计算出其他信息)和数据检查.
用法

create trigger 触发器名字 on 要绑定的表

{for|instead of|after} {update|delete|insert}

as

select * from deleted --可以获取到更改前的数据

select * from inserted --可以获取到更改后的数据


例子(数据处理)

create trigger apan_tr

on 选课

after insert ,update

as

declare @scord float,@ori_scord float,@id char(20),@name char(20)

select @scord=成绩 ,@id=学号 from inserted

select @ori_scord=入学成绩,@name=姓名 from 学生 where 学号=@id

if @scord > 85

begin

update 学生 set 有否奖学金=0

select @name+'同学的平均成绩为:'+case(@scord as char(10))+'分,可得到奖学金!'

end

if @scord < 85 and @ori_scord >600

begin

update 学生 set 有否奖学金=1

select @name+'同学的入学成绩为:'+ case(@ori _scord as varchar(10))+'分,可得到奖学金!'

end

if @scord < 85 and @ori_scord <600

begin

update 学生 set 有否奖学金=0

select @name+'同学的平均成绩为:'+ case(@scord as varchar(10))+'分,入学成绩为: '+ case(@ori _scord as varchar(10))+'无法得到奖学金!'

end

return


0

评论区