对于关系:运动员(运动员编号,运动员姓名,运动员性别,所属系名)
项目(项目编号,项目名称,项目比赛地点)
成绩(运动员编号,项目编号,积分)我想写一个触发器,实现:当在"运动员"表中添加"运动员编号"和在"项目"表中添加"项目编号"的数据时,自动在"成绩"表中加入这些数据.我写了,总是出现约束错误,怎么解决?
项目(项目编号,项目名称,项目比赛地点)
成绩(运动员编号,项目编号,积分)我想写一个触发器,实现:当在"运动员"表中添加"运动员编号"和在"项目"表中添加"项目编号"的数据时,自动在"成绩"表中加入这些数据.我写了,总是出现约束错误,怎么解决?
(
运动员编号 varchar(3) NOT NULL PRIMARY KEY NONCLUSTERED ,
运动员姓名 varchar(10),
运动员性别 bit ,
所属系名 varchar(10)
)
create table 项目
(
项目编号 varchar(3) NOT NULL PRIMARY KEY NONCLUSTERED,
项目名称 varchar(10),
项目比赛地点 varchar(10)
)
create table 成绩
(
运动员编号 varchar(3) FOREIGN KEY REFERENCES 运动员,
项目编号 varchar(3) FOREIGN KEY REFERENCES 项目,
积分 int
)
CREATE TRIGGER Insert_Y on 运动员
AFTER Insert
as
insert 成绩 select A.运动员编号 as 运动员编号,H.项目编号 as 项目编号,0 as 积分 from inserted A,项目 H
CREATE TRIGGER Insert_H on 项目
AFTER Insert
as
insert 成绩 select Y.运动员编号 as 运动员编号,A.项目编号 as 项目编号,0 as 积分 from inserted A,运动员 Yinsert 运动员 select '001','SC',1,'自然系'
insert 运动员 select '002','KKK',1,'超人系'insert 项目 select '001','铁人','任意'select * from 成绩
on 运动员
for insert
asinsert 成绩(运动员编号,项目编号,积分)
select distinct i.运动员编号,a.项目编号,0
from inserted i,项目 a
where not exists (
select 1 from 成绩 where 运动员编号=i.运动员编号 and 项目编号=a.项目编号)gocreate trigger tr_项目_insert
on 项目
for insert
asinsert 成绩(运动员编号,项目编号,积分)
select distinct a.运动员编号,i.项目编号,0
from inserted i,运动员 a
where not exists (
select 1 from 成绩 where 运动员编号=a.运动员编号 and 项目编号=i.项目编号)go--distinct 和条件本来都是多余,防止你的数据有问题而加