在数据库有一个比较重要的全局表,为了防止误操作,使用触发器自动生成实时备份数据
SQL语句如下:
--
原表
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N
'
[Veg_Enum]
'
)
and
OBJECTPROPERTY
(id,N
'
IsUserTable
'
)
=
1
)
drop
table
[
Veg_Enum
]
GO
CREATE
TABLE
[
Veg_Enum
]
(
[
E_ID
]
[
int
]
IDENTITY
(
1
,
1
)
NOT
NULL
,
[
E_Name
]
[
nvarchar
]
(
50
)COLLATEChinese_PRC_CI_AS
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__E_Name__6497E884
]
DEFAULT
(
'
枚举名称
'
),
[
E_Type
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__E_Type__658C0CBD
]
DEFAULT
(
0
),
[
E_TypeName
]
[
nvarchar
]
(
50
)COLLATEChinese_PRC_CI_AS
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__E_Type__668030F6
]
DEFAULT
(
'
枚举类型名称
'
),
[
E_Value
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__E_Valu__6774552F
]
DEFAULT
(
0
),
[
E_Parent
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__E_Pare__68687968
]
DEFAULT
(
0
),
[
E_TypeParent
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__E_Type__695C9DA1
]
DEFAULT
(
0
),
[
O_ID
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF_Veg_Enum_O_ID
]
DEFAULT
(
0
),
[
O_Name
]
[
nvarchar
]
(
20
)COLLATEChinese_PRC_CI_AS
NULL
,
[
O_Code
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
IsActive
]
[
tinyint
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__IsActi__6A50C1DA
]
DEFAULT
(
0
),
[
F1
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__F1__6B44E613
]
DEFAULT
(
0
),
[
F2
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__F2__6C390A4C
]
DEFAULT
(
0
),
[
F3
]
[
int
]
NULL
,
[
F4
]
[
int
]
NULL
,
[
F5
]
[
int
]
NULL
,
[
F6
]
[
int
]
NULL
,
[
F7
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
F8
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
F9
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
F10
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
F11
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
F12
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
CreateTime
]
[
datetime
]
NOT
NULL
CONSTRAINT
[
DF__veg_Enum__Create__6D2D2E85
]
DEFAULT
(
getdate
()),
[
B_date
]
[
datetime
]
NULL
,
[
E_Date
]
[
datetime
]
NULL
,
CONSTRAINT
[
PK_VEG_ENUM
]
PRIMARY
KEY
CLUSTERED
(
[
E_ID
]
)
ON
[
PRIMARY
]
)
ON
[
PRIMARY
]
GO
--
备份表,注意多了个PKID字段
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N
'
[Veg_Enum_BAk]
'
)
and
OBJECTPROPERTY
(id,N
'
IsUserTable
'
)
=
1
)
drop
table
[
Veg_Enum_BAk
]
GO
CREATE
TABLE
[
Veg_Enum_BAk
]
(
[
PKID
]
[
int
]
IDENTITY
(
1
,
1
)
NOT
NULL
,
[
E_ID
]
[
int
]
NOT
NULL
,
[
E_Name
]
[
nvarchar
]
(
50
)COLLATEChinese_PRC_CI_AS
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__E_Name__6497E884000
]
DEFAULT
(
'
枚举名称
'
),
[
E_Type
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__E_Type__658C0CBD000
]
DEFAULT
(
0
),
[
E_TypeName
]
[
nvarchar
]
(
50
)COLLATEChinese_PRC_CI_AS
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__E_Type__668030F6000
]
DEFAULT
(
'
枚举类型名称
'
),
[
E_Value
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__E_Valu__6774552F00
]
DEFAULT
(
0
),
[
E_Parent
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__E_Pare__68687968000
]
DEFAULT
(
0
),
[
E_TypeParent
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__E_Type__695C9DA1000
]
DEFAULT
(
0
),
[
O_ID
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF_Veg_Enum_O_ID00
]
DEFAULT
(
0
),
[
O_Name
]
[
nvarchar
]
(
20
)COLLATEChinese_PRC_CI_AS
NULL
,
[
O_Code
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
IsActive
]
[
tinyint
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__IsActi__6A50C1DA00
]
DEFAULT
(
0
),
[
F1
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__F1__6B44E61300
]
DEFAULT
(
0
),
[
F2
]
[
int
]
NOT
NULL
CONSTRAINT
[
DF__Veg_Enum__F2__6C390A4C00
]
DEFAULT
(
0
),
[
F3
]
[
int
]
NULL
,
[
F4
]
[
int
]
NULL
,
[
F5
]
[
int
]
NULL
,
[
F6
]
[
int
]
NULL
,
[
F7
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
F8
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
F9
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
F10
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
F11
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
F12
]
[
nvarchar
]
(
255
)COLLATEChinese_PRC_CI_AS
NULL
,
[
CreateTime
]
[
datetime
]
NOT
NULL
CONSTRAINT
[
DF__veg_Enum__Create__6D2D2E85000
]
DEFAULT
(
getdate
()),
[
B_date
]
[
datetime
]
NULL
,
[
E_Date
]
[
datetime
]
NULL
,
CONSTRAINT
[
PK_Veg_Enum_BAk
]
PRIMARY
KEY
CLUSTERED
(
[
PKID
]
)
ON
[
PRIMARY
]
)
ON
[
PRIMARY
]
GO
/**/
/*
*****对象:触发器dbo.Trigger_SynTradeTypeForInsertOrUpdate脚本日期:2007-3-421:33:23*****
*/
ALTER
TRIGGER
Trigger_SynVeg_EnumTermForInsertOrUpdate
ON
veg_Enum
FOR
Insert
,
Update
AS
BEGIN
TRAN
--
updateveg_EnumsetO_Name=(cast(E_TypeParentasnvarchar(10))+'年'+cast(E_Valueasnvarchar(10))+'月')
--
whereE_Type=2001andE_IDin(selectE_IDfrominserted)
insert
into
dbo.Veg_Enum_BAk
(
E_ID,E_Name,E_Type,E_TypeName,
E_Value,E_Parent,E_TypeParent,O_ID,
O_Name,O_Code,IsActive,F1,
F2,F3,F4,F5,
F6,F7,F8,F9,
F10,F11,F12,CreateTime,
B_date,E_Date
)
select
E_ID,E_Name,E_Type,E_TypeName,
E_Value,E_Parent,E_TypeParent,O_ID,
O_Name,O_Code,IsActive,F1,
F2,F3,F4,F5,
F6,F7,F8,F9,
F10,F11,F12,CreateTime,
B_date,E_Date
from
Veg_Enum
where
E_ID
in
(
select
E_ID
from
inserted)
IF
(
@@ERROR
<>
0
)
Begin
ROLLBACK
TRAN
RAISERROR
(
'
同步数据时出错!
'
,
16
,
1
)
Return
End
COMMIT
TRAN
GO
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
分享到:
相关推荐
sqlserver 存储过程中的top+变量使用分析(downmoon) ,需要的朋友可以参考下。
获取远程网页的内容之二(downmoon原创)
获取远程网页的内容之一(downmoon原创)
一个相当独立的....支持 DataGrid 及 Repeater分页使用方法:新建两个解决方案 一为Pager,一为webtest 下载后请将两个解决方案合并一下,即新的解决方案包括两个项目 Pager WebTest 详细介绍看以下链接 ...
在IE中调用javascript打开Excel的代码(downmoon原作)
asp.net中获取远程网页的内容之一(downmoon原创)
asp.net下获取远程网页的内容之二(downmoon原创)
由于微软在vs2005 vsts团队开发版中集成了sql 2005 express,而在SQL 2005中又集成了vs2005 Express,,所以当很多用户同时安装vs2005团队开发?...sql 2005企业版(downmoon)时,就会出现数据库连接失败的case
在使用vs.php+ sourcesafe管理代码时,发现有时候并不能从vs.net IDE中正确获取phpproj文件下的所有文件。但从sourcesafe IDE下却可以。
在某种程度上,有了它,我们再也不用为不能全面及时检测众多浏览器和五花八门的js/css不兼容性而痛不欲生了。...http://blog.csdn.net/downmoon/archive/2010/10/17/5946465.aspx 欢迎联系邀月 3w@live.cn
讲座内容: Profie是ASP.NET 2.0的重要特性之一,而ASP.NET AJAX提出了Profile Service,使开发人员能够方便地在客户端以AJAX的方式来处理Profile信息。这节课我们将来了解这个ProfileService的使用和扩展方式。
讲座内容: Authentication Service是ASP.NET AJAX提供的另一个Application Service,能够让我们以AJAX方式来使用用户登录等功能。本次课程主要讲述如何来使用Authentication Service。
讲座内容: Profie 是ASP.NET 2.0的重要特性之一,而ASP.NET AJAX提出了Profile Service,使开发人员能够方便地在客户端以AJAX的方式来处理Profile信息。这节课我们将来了解这个ProfileService简单的功能细节以及...
使用这个异步通信层可以方便地发出AJAX请求,而且事实上,整个ASP.NET AJAX的客户端与服务器端的通信都是由它负责的。我们这节课将讲解一下这个异步通信层的使用方式,它可以方便我们做“纯粹”的AJAX应用。