sql server 2005触发器的问题

sungj09173 2009-12-28 10:24:34

我一下代码有什么问题呢?
当我向员工表中添加数据时,不能向部门表自动添加啊



create trigger pt2
on people for insert
as
declare @d char(10)
declare @e char(10)
select @d= id from people
select @e=position from people
if @e='经理'
begin
insert into department(department_id,department_name, id) values('a','经理室',@d)
end
if @e='技术人员'
begin
insert into department(department_id,department_name ,id) values('b','技术部门',@d)
end
if @e='销售人员'
begin
insert into department(department_id,department_name ,id) values('d','销售部门',@d)
end
if @e='财务人员'
begin
insert into department(department_id,department_name ,id) values('c','财务部门',@d)
end
...全文
113 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yang_ 2009-12-28
  • 打赏
  • 举报
回复
别没测试就说不对,虽然我没测试
Yang_ 2009-12-28
  • 打赏
  • 举报
回复
触发器不是这么用的,财你的需求给你个,看看是不是你要的

create trigger pt2 
on people for insert
as

insert into department(department_id,department_name, id)
select 'a','经理室',min(id)
from inserted i
where i.position = '经理'
and not exists ( select 1 from department where department_id ='a')

insert into department(department_id,department_name, id)
select 'b','技术部门',min(id)
from inserted i
where i.position = '技术人员'
and not exists ( select 1 from department where department_id ='b')

insert into department(department_id,department_name, id)
select 'd','销售部门',min(id)
from inserted i
where i.position = '销售人员'
and not exists ( select 1 from department where department_id ='d')

insert into department(department_id,department_name, id)
select 'c','财务部门',min(id)
from inserted i
where i.position = '财务人员'
and not exists ( select 1 from department where department_id ='c')

go
sungj09173 2009-12-28
  • 打赏
  • 举报
回复
快点来帮帮我吧
我觉得可能是if语句格式有问题
sungj09173 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 acmain_chm 的回复:]
你的create table 语句是什么?是不是有外键的影响?
[/Quote]
你说的外键影响什么意思
表的创建
create table department(id char(10) primary key, department_id char(10), department_name char(20), foreign key (id) references people(id))

create table people(id char(10) primary key,name char(10),age char(4),workePlace char(20),position char(10))

sungj09173 2009-12-28
  • 打赏
  • 举报
回复
格式没问题
能运行通过
bobui 2009-12-28
  • 打赏
  • 举报
回复
这个触发器写得有格式错误吧,你都没了解什么是触发器就在用触发器了,建议先看看触发器方面的资料
sungj09173 2009-12-28
  • 打赏
  • 举报
回复
create table department(id char(10) primary key, department_id char(10), department_name char(20), foreign key (id) references people(id))

create table people(id char(10) primary key,name char(10),age char(4),workePlace char(20),position char(10))
ACMAIN_CHM 2009-12-28
  • 打赏
  • 举报
回复
你的create table 语句是什么?是不是有外键的影响?
sungj09173 2009-12-28
  • 打赏
  • 举报
回复
那应该怎么做
SQL77 2009-12-28
  • 打赏
  • 举报
回复
好像米问题呀,CHAR(10)有没有关系
--小F-- 2009-12-28
  • 打赏
  • 举报
回复
一个关联都没有??怎么触发?
内容概要:本文详细介绍了利用Simulink进行变压器开路试验的电路连接配置与仿真实现方法,重点在于通过仿真手段还原实际电力系统中变压器在空载条件下的电气特性,从而深入理解其工作原理与性能表现。文章作为电力系统仿真系列研究的一部分,系统阐述了从电路模型搭建、参数设定、仿真运行到结果分析的完整流程,突出展示了MATLAB/Simulink在电力设备建模与教学科研中的强大功能与应用价值。; 适合人群:具备电力系统基础知识,熟悉MATLAB/Simulink仿真环境,从事电气工程、自动化及相关领域的研发人员,以及高年级本科生和研究生。; 使用场景及目标:①掌握变压器开路试验的基本原理与Simulink仿真建模的具体步骤;②通过仿真实验深入理解空载电流、铁芯损耗及励磁特性等关键参数的物理意义;③为后续开展变压器短路试验、暂态过程分析以及其他电力设备的仿真研究奠定理论与实践基础。; 阅读建议:建议结合Simulink软件动手实践,逐步构建并调试电路模型,重点关注各元件参数的设置方法与测量模块的应用技巧,同时推荐参考文中提及的其他相关仿真案例进行拓展学习,以全面提升对电力系统仿真实践的整体认知与操作能力。

34,876

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧