外键定义与触发器创建
2009-03-15 19:03
120 查看
首先创建主表
create table Master
(
VoteId int primary key,
VoteTitle varchar(30) not null,
VoteSum int default 0
)
insert into Master values(1,'选取班长',0)
insert into Master values(2,'选取学习委员',0)
insert into Master values(3,'选取组长',0)
再创建一个子表
create table Detail
(
VoteId int foreign key references Master(NameId),--定义外键,与主表关联
VoteDetailId int not null,
VoteItem varchar(30) not null,
VoteNum int detault 0,
primary key(VoteId,VoteDetailId) --定义双主键,只要不是两两相同就行
)
insert into Detail values(1,'班长1',1,0)
insert into Detail values(1,'班长2',2,0)
insert into Detail values(2,'委员1',1,0)
insert into Detail values(2,'委员2',2,0)
insert into Detail values(3,'组长1',1,0)
insert into Detail values(3,'组长2',2,0)
--创建触发器(当子表中的VoteNum加1时,主表中的VoteSum也加1,条件为具有相同的VoteId)
create trigger updateMaster
on Detail
for update
as
begin
update Master set VoteSum=VoteSum+1 where VoteId=(select top 1 VoteId from inserted)
end
//解释
inserted、deleted:
这是两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录形成的表,deleted 保存的是 delete 或 update 之前所影响的记录形成的表
create table Master
(
VoteId int primary key,
VoteTitle varchar(30) not null,
VoteSum int default 0
)
insert into Master values(1,'选取班长',0)
insert into Master values(2,'选取学习委员',0)
insert into Master values(3,'选取组长',0)
再创建一个子表
create table Detail
(
VoteId int foreign key references Master(NameId),--定义外键,与主表关联
VoteDetailId int not null,
VoteItem varchar(30) not null,
VoteNum int detault 0,
primary key(VoteId,VoteDetailId) --定义双主键,只要不是两两相同就行
)
insert into Detail values(1,'班长1',1,0)
insert into Detail values(1,'班长2',2,0)
insert into Detail values(2,'委员1',1,0)
insert into Detail values(2,'委员2',2,0)
insert into Detail values(3,'组长1',1,0)
insert into Detail values(3,'组长2',2,0)
--创建触发器(当子表中的VoteNum加1时,主表中的VoteSum也加1,条件为具有相同的VoteId)
create trigger updateMaster
on Detail
for update
as
begin
update Master set VoteSum=VoteSum+1 where VoteId=(select top 1 VoteId from inserted)
end
//解释
inserted、deleted:
这是两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录形成的表,deleted 保存的是 delete 或 update 之前所影响的记录形成的表
相关文章推荐
- Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?
- 加载数据库User表中创建人,显示到界面控件中,其中数据库定义是int 型 外键(User表)
- Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?
- oracle系统时间查询,外键关系查询及删除,创建表、序列和触发器
- 创建数据库、表、主外键、各种约束、存储过程、视图、索引、事务使用、触发器、创建登录账号、数据库用户 Sql语句示例
- sqlserver 基础(增、删、改、查、链表查询、建立聚焦索引、主键、创建约束、创建外键)、触发器、存储过程
- 表的主键与外键,创建外键表
- activiti自己定义流程之自己定义表单(二):创建表单
- 创建主键 创建外键 创建约束
- oracle数据库创建序列和触发器实现id自增
- 工厂模式定义:提供创建对象的接口.
- (第四篇)在FFilmation场景中创建定义来用
- 二叉树要掌握的知识点(-)(定义、创建、先中后序遍历、求深度)
- mssql:t-sql;创建表;给表添加约束;使用变量;事务,索引,视图;存储过程;触发器trigger;播放器http://www.smartgz.com/blog/Article/956.asp
- DDL_DATABASE_LEVEL_EVENTS 数据库级的触发器,创建数据库日志表
- ORACLE FORM key + fn 键定义触发器
- Oracle数据库设计(定义约束 外键约束)(转)
- mysql视图定义、原理、创建、使用
- mysql 创建外键:ERROR 1005: Can't create table
- 数据库 创建外键失败 原因枚举