几张表的问题,急,在线等.

txmjs 2005-03-22 10:55:10
表的结构如下.

  A表ID 人事编码 姓名
1 0001 张X
B表ID 人事编码 考核起始时间 结束时间 内容
1 0001 1995.1 1995.12 XXXXXXX
2 0001 1996.1 1996.12 XXXXXXX

现在我的问题是
1.如何让A表的内容和B表的内容对应.即A表一个人对应B表里面的几个内容.
2.当如何在B表中同时插入和A表相同的人事代码.
3.当删除A表时,B表的内容也跟着相应的把这个人的记录删除了.
求各位帮忙.在线等.
...全文
137 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2005-03-23
  • 打赏
  • 举报
回复
--1.建表时用级联更新和删除(解决1,3点问题)
create table A表(
id int identity,
人事编码 char(4) primary key,
姓名 nvarchar(10) not null)

create table B表(
id int identity,
人事编码 char(4) foreign key
references A表(人事编码)
on update cascade
on delete cascade,
考核起始时间 varchar(7),
结束时间 varchar(7),
内容 nvarchar(4000))
go

--创建处理触发器(解决2的问题)
create trigger tr_insert on A表
for insert
as
insert B表(人事编码,考核起始时间,结束时间,内容)
select 人事编码,'1995.1','1995.12',N'XXXXXXX'
from inserted
go
paoluo 2005-03-22
  • 打赏
  • 举报
回复
补充:
2.
Create Trigger InsertB On A
For Insert
As
Begin
Declare @RenShiCode Nvarchar(20)
Select @RenShiCode=人事编码 from Inserted
Insert B (人事编码) Values(@RenShiCode)
End
GO

3.
Create Trigger DeleteB On A
For Delete
As
Begin
Delete from B Where B.人事编码=(Select 人事编码 from Deleted)
End
GO
xluzhong 2005-03-22
  • 打赏
  • 举报
回复
那第二步如何实现呀?
----是不是在a插入时,b表也插入,但后面的字段怎么办?
create trigger d_a
on a表
for insert
as
insert into B表(人事编码) select 人事编码 from inserted
go
txmjs 2005-03-22
  • 打赏
  • 举报
回复
第一步第三步都可以实现.那第二步如何实现呀?
paoluo 2005-03-22
  • 打赏
  • 举报
回复
1.
Select A.*,B.考核起始时间,B.结束时间,B.内容 from A Inner Join B On A.人事编码=B.人事编码

2.在A表写一个插入的trigger

3.在A表写一个删除的trigger

xluzhong 2005-03-22
  • 打赏
  • 举报
回复
1.用级联
2.
3.create trigger d_a
on a表
for delete
as
delete from b表 b inner join deleted d on b.人事编码=d.人事编码
go

34,837

社区成员

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

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