请问这样的触发器该如何写呢?

iceandfire 2003-05-08 04:37:01
现有两张表,如下:
Table_Student:
Student_Id student_name student_age student_sex

Table_Record
Record_name Record_Type Record_value Record_date

在更新第一张表的时候,不管那个字段更新,都希望在第二张表添加如下的记录:更新的字段名称,更新的类型(添加,删除,更改),更新字段的值,更新的日期。如果希望这样,那我在第一张表上应该实现怎样的触发器呢?
...全文
32 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
DeceitLei 2003-05-16
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1793/1793651.xml?temp=.5702936
iceandfire 2003-05-09
  • 打赏
  • 举报
回复
up
iceandfire 2003-05-08
  • 打赏
  • 举报
回复
up!
iceandfire 2003-05-08
  • 打赏
  • 举报
回复
还有高招吗?
caiyunxia 2003-05-08
  • 打赏
  • 举报
回复
在前台建立函数
操作,插入数据
happydreamer 2003-05-08
  • 打赏
  • 举报
回复
create trigger t on Table_Student
for insert ,update,delete
as

if update(Student_Id)
insert into Table_Record
select 'Student_Id',Student_Id,getdate(),from inserted a
if update(student_name)
insert into Table_Record
select 'student_name',student_name,getdate(),from inserted a
if update(student_age)
insert into Table_Record
select 'student_age',student_age,getdate(),from inserted a
if update(student_sex)
insert into Table_Record
select 'student_sex',student_sex,getdate(),from inserted a

return




判断类型的话,要么分开写触发器 insert,update,delete

iceandfire 2003-05-08
  • 打赏
  • 举报
回复
如果我有好几百张表,向caiyunxia(monkey)同志的做法是否太烦琐了呢?有没有精简点的做法?先谢谢楼上两位
caiyunxia 2003-05-08
  • 打赏
  • 举报
回复
CREATE TRIGGER [TRIGGER NAME] ON [dbo].[表名]
FOR delete
AS
if update(Student_Id)
insert into Table_Record
select 'Student_Id','删除',Student_Id,getdate()
from deleted
if update(student_name)
insert into Table_Record
select 'student_name','删除',student_name,getdate()
from deleted

if update(student_age)
insert into Table_Record
select 'student_age','删除',student_age,getdate()
from inserted

if update(student_sex)
insert into Table_Record
select 'student_sex','删除',student_sex,getdate()
from deleted

caiyunxia 2003-05-08
  • 打赏
  • 举报
回复
CREATE TRIGGER [TRIGGER NAME] ON [dbo].[表名]
FOR insert
AS
if update(Student_Id)
insert into Table_Record
select 'Student_Id','添加',Student_Id,getdate()
from inserted
if update(student_name)
insert into Table_Record
select 'student_name','添加',student_name,getdate()
from inserted

if update(student_age)
insert into Table_Record
select 'student_age','添加',student_age,getdate()
from inserted

if update(student_sex)
insert into Table_Record
select 'student_sex','添加',student_sex,getdate()
from inserted

caiyunxia 2003-05-08
  • 打赏
  • 举报
回复
CREATE TRIGGER [TRIGGER NAME] ON [dbo].[表名]
FOR UPDATE
AS
if update(Student_Id)
insert into Table_Record
select 'Student_Id','更改',Student_Id,getdate()
from inserted
if update(student_name)
insert into Table_Record
select 'student_name','更改',student_name,getdate()
from inserted

if update(student_age)
insert into Table_Record
select 'student_age','更改',student_age,getdate()
from inserted

if update(student_sex)
insert into Table_Record
select 'student_sex','更改',student_sex,getdate()
from inserted

liuyunfeidu 2003-05-08
  • 打赏
  • 举报
回复
在第一个表上建立关于添加删除更改的触发器,判断添加表和删除表中是否有数据。情况如下
添加 添加表有 删除表没有
删除 添加表无 删除表有
更改 添加表有 删除表有
至于如何判断字段名称,我就帮不了你了。真的不好意思啊。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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