数据库结构:

CREATE TABLE [dbo].[cg_tz_log] (
[logid] int NOT NULL IDENTITY(1,1) ,
operate varchar(10), -- 操作类型 如Insert,Update,Delete.
id int, -- 原表ID(主键)
[cg_date_o] date NULL ,
[cg_date_n] date NULL ,
[cg_id_o] varchar(255) NULL ,
[cg_id_n] varchar(255) NULL ,
[cg_sname_o] varchar(255) NULL ,
[cg_sname_n] varchar(255) NULL ,
[cg_cgpname_o] varchar(255) NULL ,
[cg_cgpname_n] varchar(255) NULL ,
[cg_ggxh_o] varchar(255) NULL ,
[cg_ggxh_n] varchar(255) NULL ,
[cg_pp_o] varchar(255) NULL ,
[cg_pp_n] varchar(255) NULL ,
[cg_num_o] int NULL ,
[cg_num_n] int NULL ,
[cg_dw_o] varchar(255) NULL ,
[cg_dw_n] varchar(255) NULL ,
[cg_price_o] money NULL ,
[cg_price_n] money NULL ,
[cg_priceall_o] money NULL ,
[cg_priceall_n] money NULL ,
[cg_htprice_o] money NULL ,
[cg_htprice_n] money NULL ,
[cg_htcbprice_o] money NULL ,
[cg_htcbprice_n] money NULL ,
[cg_xsht_o] varchar(255) NULL ,
[cg_xsht_n] varchar(255) NULL ,
[cg_xspname_o] varchar(255) NULL ,
[cg_xspname_n] varchar(255) NULL ,
[cg_lb_o] varchar(255) NULL ,
[cg_lb_n] varchar(255) NULL ,
[cg_f_date_o] date NULL ,
[cg_f_date_n] date NULL ,
[cg_f_percent_o] decimal(38,10) NULL ,
[cg_f_percent_n] decimal(38,10) NULL ,
[cg_f_price_o] money NULL ,
[cg_f_price_n] money NULL ,
[cg_nf_price_o] money NULL ,
[cg_nf_price_n] money NULL ,
[cg_p_id_o] varchar(255) NULL ,
[cg_p_id_n] varchar(255) NULL ,
[cg_p_price_o] money NULL ,
[cg_p_price_n] money NULL ,
[cg_dhqk_o] varchar(255) NULL ,
[cg_dhqk_n] varchar(255) NULL ,
[cg_sphone_o] varchar(255) NULL ,
[cg_sphone_n] varchar(255) NULL ,
[cg_sfax_o] varchar(255) NULL ,
[cg_sfax_n] varchar(255) NULL ,
[cg_slxr_o] varchar(255) NULL ,
[cg_slxr_n] varchar(255) NULL ,
[cg_dh_status_o] int NULL DEFAULT ((0)) ,
[cg_dh_status_n] int NULL DEFAULT ((0)) ,
[cg_dh_date_o] date NULL DEFAULT ('2017-9-27') ,
[cg_dh_date_n] date NULL DEFAULT ('2017-9-27') ,
[cg_dhzq_o] int NULL DEFAULT ((30)) ,
[cg_dhzq_n] int NULL DEFAULT ((30)) ,
[cg_kfid_o] varchar(255) NULL DEFAULT '',
[cg_kfid_n] varchar(255) NULL DEFAULT '',
spid int not null, -- spid
login_name varchar(100), -- 登录名
prog_name varchar(100), -- 程序名
hostname varchar(100), -- 主机名
ipaddress varchar(100), -- IP地址
runsql varchar(4000), -- 执行的TSQL代码
UDate datetime -- 操作日期时间
) GO
-- ----------------------------
ALTER TABLE [dbo].[cg_tz_log] ADD PRIMARY KEY ([id])
GO

触发器:

-- 建跟踪触发器
create trigger tr_cg_tz_log
on cg_tz after update,insert,delete
as
begin
declare @di table(et varchar(200),pt varchar(200),ei varchar(max))
insert into @di exec('dbcc inputbuffer(@@spid)') declare @op varchar(10)
select @op=case when exists(select 1 from inserted) and exists(select 1 from deleted)
then 'Update'
when exists(select 1 from inserted) and not exists(select 1 from deleted)
then 'Insert'
when not exists(select 1 from inserted) and exists(select 1 from deleted)
then 'Delete' end if @op in('Update','Insert')
begin
insert into cg_tz_log
(operate,id,
cg_date_o,cg_date_n,cg_id_o,cg_id_n,cg_sname_o,cg_sname_n,cg_cgpname_o,cg_cgpname_n,cg_ggxh_o,cg_ggxh_n,
cg_pp_o,cg_pp_n,cg_num_o,cg_num_n,cg_dw_o,cg_dw_n,cg_price_o,cg_price_n,cg_priceall_o,cg_priceall_n,
cg_htprice_o,cg_htprice_n,cg_htcbprice_o,cg_htcbprice_n,cg_xsht_o,cg_xsht_n,cg_xspname_o,cg_xspname_n,cg_lb_o,cg_lb_n,
cg_f_date_o,cg_f_date_n,cg_f_percent_o,cg_f_percent_n,cg_f_price_o,cg_f_price_n,cg_nf_price_o,cg_nf_price_n,cg_p_id_o,cg_p_id_n,
cg_p_price_o,cg_p_price_n,cg_dhqk_o,cg_dhqk_n,cg_sphone_o,cg_sphone_n,cg_sfax_o,cg_sfax_n,cg_slxr_o,cg_slxr_n,
cg_dh_status_o,cg_dh_status_n,cg_dh_date_o,cg_dh_date_n,cg_dhzq_o,cg_dhzq_n,cg_kfid_o,cg_kfid_n,
spid,login_name,prog_name,hostname,ipaddress,runsql,UDate)
select @op,n.id,
o.cg_date,n.cg_date,o.cg_id,n.cg_id,o.cg_sname,n.cg_sname,o.cg_cgpname,n.cg_cgpname,o.cg_ggxh,n.cg_ggxh,
o.cg_pp,n.cg_pp,o.cg_num,n.cg_num,o.cg_dw,n.cg_dw,o.cg_price,n.cg_price,o.cg_priceall,n.cg_priceall,
o.cg_htprice,n.cg_htprice,o.cg_htcbprice,n.cg_htcbprice,o.cg_xsht,n.cg_xsht,o.cg_xspname,n.cg_xspname,o.cg_lb,n.cg_lb,
o.cg_f_date,n.cg_f_date,o.cg_f_percent,n.cg_f_percent,o.cg_f_price,n.cg_f_price,o.cg_nf_price,n.cg_nf_price,o.cg_p_id,n.cg_p_id,
o.cg_p_price,n.cg_p_price,o.cg_dhqk,n.cg_dhqk,o.cg_sphone,n.cg_sphone,o.cg_sfax,n.cg_sfax,o.cg_slxr,n.cg_slxr,
o.cg_dh_status,n.cg_dh_status,o.cg_dh_date,n.cg_dh_date,o.cg_dhzq,n.cg_dhzq,o.cg_kfid,n.cg_kfid,
@@spid,
(select login_name from sys.dm_exec_sessions where session_id=@@spid),
(select program_name from sys.dm_exec_sessions where session_id=@@spid),
(select hostname from sys.sysprocesses where spid=@@spid),
(select client_net_address from sys.dm_exec_connections where session_id=@@spid),
(select top 1 isnull(ei,'') from @di),
getdate()
from inserted n
left join deleted o on o.id=n.id
end
else
begin
insert into cg_tz_log
(operate,id,
cg_date_o,cg_date_n,cg_id_o,cg_id_n,cg_sname_o,cg_sname_n,cg_cgpname_o,cg_cgpname_n,cg_ggxh_o,cg_ggxh_n,
cg_pp_o,cg_pp_n,cg_num_o,cg_num_n,cg_dw_o,cg_dw_n,cg_price_o,cg_price_n,cg_priceall_o,cg_priceall_n,
cg_htprice_o,cg_htprice_n,cg_htcbprice_o,cg_htcbprice_n,cg_xsht_o,cg_xsht_n,cg_xspname_o,cg_xspname_n,cg_lb_o,cg_lb_n,
cg_f_date_o,cg_f_date_n,cg_f_percent_o,cg_f_percent_n,cg_f_price_o,cg_f_price_n,cg_nf_price_o,cg_nf_price_n,cg_p_id_o,cg_p_id_n,
cg_p_price_o,cg_p_price_n,cg_dhqk_o,cg_dhqk_n,cg_sphone_o,cg_sphone_n,cg_sfax_o,cg_sfax_n,cg_slxr_o,cg_slxr_n,
cg_dh_status_o,cg_dh_status_n,cg_dh_date_o,cg_dh_date_n,cg_dhzq_o,cg_dhzq_n,cg_kfid_o,cg_kfid_n,
spid,login_name,prog_name,hostname,ipaddress,runsql,UDate)
select @op,o.id,
o.cg_date,null,o.cg_id,null,o.cg_sname,null,o.cg_cgpname,null,o.cg_ggxh,null,
o.cg_pp,null,o.cg_num,null,o.cg_dw,null,o.cg_price,null,o.cg_priceall,null,
o.cg_htprice,null,o.cg_htcbprice,null,o.cg_xsht,null,o.cg_xspname,null,o.cg_lb,null,
o.cg_f_date,null,o.cg_f_percent,null,o.cg_f_price,null,o.cg_nf_price,null,o.cg_p_id,null,
o.cg_p_price,null,o.cg_dhqk,null,o.cg_sphone,null,o.cg_sfax,null,o.cg_slxr,null,
o.cg_dh_status,null,o.cg_dh_date,null,o.cg_dhzq,null,o.cg_kfid,null,
@@spid,
(select login_name from sys.dm_exec_sessions where session_id=@@spid),
(select program_name from sys.dm_exec_sessions where session_id=@@spid),
(select hostname from sys.sysprocesses where spid=@@spid),
(select client_net_address from sys.dm_exec_connections where session_id=@@spid),
(select top 1 isnull(ei,'') from @di),
getdate()
from deleted o
end
end
go

转载原地址:http://blog.csdn.net/jc_benben/article/details/79218864

sql server 用触发器记录增删改操作(转载)的更多相关文章

  1. Sql Server数据库之四个增删改查

    一.数据库的增删改查 1.新建数据库 create database students on primary ( name="students_data",--主数据文件的逻辑名 ...

  2. MySQL常用sql语句-----数据表的增删改操作

    常用sql操作如下: 1.查看当前数据库的所有表 show tables; 2.创建表 create table stu(sid int,sname char(20),sage int default ...

  3. sql server 建表,增删改练习

    use master --drop database Class create database Class on primary( name='Class', filename='D:\SQLTes ...

  4. SQL Server建表和增删改

    create database 数据库名 go --穿件完成 go create table 表名(列名 类型, 列名 类型, 列名 类型 --最后一个列名不加逗号) go --创建完成go 以创建表 ...

  5. 详解连接SQL Server数据库的方法,并使用Statement接口实现对数据库的增删改操作

    总结一下,连接SQL Server数据库需要以下几个步骤: 1. 导入驱动Jar包:sqljdbc.jar 2. 加载并注册驱动程序 3. 设置连接路径 4. 加载并注册驱动 5. 连接数据库 6. ...

  6. Linq to SQL 简单的增删改操作

    Linq to SQL 简单的增删改操作. 新建数据库表tbGuestBook.结构如下: 新建web项目,完成相应的dbml文件.留言页面布局如下 <body> <form id= ...

  7. ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪

    ASP.NET MVC深入浅出(被替换)   一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...

  8. 第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍

    第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structur ...

  9. C# winform窗体设计-对数据库执行增删改操作

    对于学习数据库的人来说,数据库的增删改可谓是最基本的了(小编其实也只是一个小白=-=),这篇文章,小编将于大家讲解数据库增删改操作 在执行数据库增删改的时候主要使用的:Command 类       ...

随机推荐

  1. Win10激活失败并提示错误代码0xC004C003的解决方法

    亲测,可用. 步骤如下: 进入cmd,管理员权限登录 slmgr.vbs /upk slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmgr /skms zh.us ...

  2. dom 继承树

  3. 小程序使用动画时的 px 单位 转 rpx的方法

    借助API wx.getSystemInfoSync(); 通过API可获取的值: // 在 iPhone6 下运行: var systemInfo = wx.getSystemInfoSync(); ...

  4. buuctf-[网鼎杯 2018]Fakebook 1

    这道题,也是费了很大的劲,慢慢理解慢慢消化,今天,才开始把wp写出来 首先我们先扫描一波目录,用dirsearch扫一手,发现有robots.txt文件 dirseach自带的字典在db目录下,使用格 ...

  5. ip 子网掩码、网络地址、广播地址计算

    例:已知ip  16.158.165.91/22子网掩码 根据22 得知子网掩码占22位 即:11111111.11111111.11111100.00000000   == 255.255.252. ...

  6. uniapp图片转base64

    直接上代码了,网上也很多一样的,这里记录下,因为仅仅第二种在真机微信小程序上我这里测试转换失败,所以就一并写在这里了: //图片转base64 urlTobase64(url){ // #ifdef ...

  7. Mycat配置分库分表(垂直分库、水平分表)、全局序列

    1. Mycat相关文章   Linux安装Mycat1.6.7.4并实现Mysql数据库读写分离简单配置   Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)   Docke ...

  8. ssh-copy-id三步实现SSH免密登录

    背景 在日常工作中,不希望每次登录都输入密码,这里主要介绍一种简单的配置Linux主机间免密登录的方式 先了解两个核心命令: ssh-keygen :产生公钥和私钥对 ssh-copy-id:将北极的 ...

  9. IOS中使用.xib文件封装一个自定义View

    1.新建一个继承UIView的自定义view,假设类名叫做 MyAppVew #import <UIKit/UIKit.h> @class MyApp; @interface MyAppV ...

  10. Synchronized用法原理和锁优化升级过程(面试)

    简介 多线程一直是面试中的重点和难点,无论你现在处于啥级别段位,对synchronized关键字的学习避免不了,这是我的心得体会.下面咱们以面试的思维来对synchronized做一个系统的描述,如果 ...