数据库结构:

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. 6种css3 transform图片悬停动态效果

    html骨架代码 <!DOCTYPE html> <html> <head lang="en"> <meta charset=" ...

  2. Nodepad++ 没有TextFX Characters插件

    Nodepad++ 没有TextFX Characters插件 原因:从6.5以上的某个版本开始,就没有了默认的这个插件. 我试了最新的版本下载插件也不行,只好下载一个6.4.5的版本,再更新插件管理 ...

  3. 01_02_py

    1基础知识 1.自然语言 (natural language) 是人们交流所使用的语言,例如英语.西班牙语和法语.它们不是人为设计出来的(尽管有人试图这样做):而是自然演变而来. 2.形式语言 (fo ...

  4. sqli-labs less-24(二次注入)

    less-24 原理: 在网站处理用户提交的数据的时候,只是将某些敏感字符进行了转义.因而使得用户第一次提交的时候不会被当做代码执行.但是这些数据存入数据库的时候却没有转义,而网站程序默认数据库中的数 ...

  5. 第一次软件工程与UML的编程作业

    博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018S ...

  6. Flink Checkpoint 参数详解

    Flink Checkpoint 参数详解 什么是 checkpoint 保存状态 Checkpoint 参数详解 StreamExecutionEnvironment env = StreamExe ...

  7. 被 Pandas read_csv 坑了

    被 Pandas read_csv 坑了 -- 不怕前路坎坷,只怕从一开始就走错了方向 Pandas 是python的一个数据分析包,纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的 ...

  8. Containerd 的前世今生和保姆级入门教程

    原文链接:https://fuckcloudnative.io/posts/getting-started-with-containerd/ 1. Containerd 的前世今生 很久以前,Dock ...

  9. Python制作塔防小游戏

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块.

  10. 说说 Python 中的高阶函数

    高阶函数(higher-order function)指的是:接受一个函数为参数,或者把函数作为结果值返回的函数. 1 sorted() 比较常见的高阶函数是 sorted(),其内部的关键字参数 k ...