27,579
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE [JSERP].[SO](
[SO_SOID] [char](10) COLLATE Chinese_PRC_CI_AS NOT NULL,--订单号
[so_cjsj] [datetime] NULL DEFAULT (getdate()),
PRIMARY KEY CLUSTERED
(
[SO_SOID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [JSERP].[SOMX](
[SOMX_SOID] [char](10) COLLATE Chinese_PRC_CI_AS NOT NULL,---订单号
[SOMX_SOXH] [float] NOT NULL, ---订单序号
[u_somx_whsj] [datetime] NULL, ---维护时间
CONSTRAINT [PK_jserp.somx] PRIMARY KEY NONCLUSTERED
(
[SOMX_SOID] ASC,
[SOMX_SOXH] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [JSERP].[DeletedHistory](
[ID] [int] IDENTITY(1,1) NOT NULL,
[DeleteID] [nchar](40) COLLATE Chinese_PRC_CI_AS NOT NULL, ---删除记录的主键,联合主键的采用“+”连接
[TableName] [nchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL, ---删除记录所在表 表名
[DeleteDate] [datetime] NOT NULL CONSTRAINT [DF_DeletedHistory_DeleteDate] DEFAULT (CONVERT([datetime],CONVERT([char](100),getdate(),(120)),(0))),
CONSTRAINT [PK_DeletedHistory] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
if object_id('so') is not null drop table so
go
CREATE TABLE [SO](
[SO_SOID] [char](10) COLLATE Chinese_PRC_CI_AS NOT NULL,--订单号
[so_cjsj] [datetime] NULL DEFAULT (getdate()),
PRIMARY KEY CLUSTERED
(
[SO_SOID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
go
if object_id('trd_so') is not null drop trigger trd_so
go
create trigger trd_so
on so
instead of delete
as
begin
delete from [SOMX] where [SOMX_SOID] in(select [SO_SOID] from deleted)
delete from [SO] where [SO_SOID] in(select [SO_SOID] from deleted)
insert [DeletedHistory] select [SO_SOID],'SO',getdate() from deleted
end
go
if object_id('somx') is not null drop table somx
go
CREATE TABLE [SOMX](
[SOMX_SOID] [char](10) COLLATE Chinese_PRC_CI_AS NOT NULL,---订单号
[SOMX_SOXH] [float] NOT NULL, ---订单序号
[u_somx_whsj] [datetime] NULL, ---维护时间
CONSTRAINT [PK_jserp.somx] PRIMARY KEY NONCLUSTERED
(
[SOMX_SOID] ASC,
[SOMX_SOXH] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
go
if object_id('trd_SOMX') is not null drop trigger trd_SOMX
go
create trigger trd_SOMX
on SOMX
for delete
as
begin
insert [DeletedHistory] select rtrim([SOMX_SOID])+'+'+ltrim([SOMX_SOXH]),'SOMX',getdate() from deleted
end
go
if object_id('DeletedHistory') is not null drop table DeletedHistory
go
CREATE TABLE [DeletedHistory](
[ID] [int] IDENTITY(1,1) NOT NULL,
[DeleteID] [nchar](40) COLLATE Chinese_PRC_CI_AS NOT NULL, ---删除记录的主键,联合主键的采用“+”连接
[TableName] [nchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL, ---删除记录所在表 表名
[DeleteDate] [datetime] NOT NULL CONSTRAINT [DF_DeletedHistory_DeleteDate] DEFAULT (CONVERT([datetime],CONVERT([char](100),getdate(),(120)),(0))),
CONSTRAINT [PK_DeletedHistory] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
go
--测试
insert so select 'A001',getdate() union select 'A002',getdate()
insert [SOMX]
select 'A001','1',getdate() union
select 'A001','2',getdate() union
select 'A001','3',getdate() union
select 'A002','1',getdate() union
select 'A002','2',getdate()
go
delete [SOMX] where [SOMX_SOID]='A001' and [SOMX_SOXH]=1
select * from [DeletedHistory]
go
delete [SO] where [SO_SOID]='A002'
select * from [DeletedHistory]
/*
(2 行受影响)
(5 行受影响)
(1 行受影响)
(1 行受影响)
ID DeleteID TableName DeleteDate
----------- ---------------------------------------- -------------------- -----------------------
1 A001+1 SOMX 2010-07-28 12:38:56.623
(1 行受影响)
(2 行受影响)
(2 行受影响)
(1 行受影响)
(1 行受影响)
(1 行受影响)
ID DeleteID TableName DeleteDate
----------- ---------------------------------------- -------------------- -----------------------
1 A001+1 SOMX 2010-07-28 12:38:56.623
2 A002+2 SOMX 2010-07-28 12:38:56.640
3 A002+1 SOMX 2010-07-28 12:38:56.640
4 A002 SO 2010-07-28 12:38:56.640
(4 行受影响)
*/
CREATE TRIGGER [JSERP].[trgDelete]
ON [JSERP].[SOMX]
FOR DELETE
AS
begin
insert into [JSERP].[DeletedHistory]([DeleteID],[TableName]) select rtrim([SOMX_SOID])+'+'+convert(varchar,[SOMX_SOXH]) [DeleteID],'[SOMX]' [TableName] from deleted
END