一个记录数据库中数据改动的基本信息,大家来提提意见
题目:
在现有的数据库基础上获得改动字段的名称,字段属性等信息,并将其保存到Opensource数据库中
解决方案:
在Opensource数据库中建立三张表,分别是Modify_Column_Information、Modify_Column_Value、Temp_Column_Value
Modify_Column_Information是获得改动字段的属性信息,表结构为:
CREATE TABLE [dbo].[Modify_Column_Information] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Table_name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Column_name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Column_type] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Column_length] [int] NOT NULL ,
[Column_isnull] [int] NOT NULL ,
[Modify_type] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Modify_date] [datetime] NOT NULL
) ON [PRIMARY]
Modify_Column_Value是获得改动字段的值,如果是delete操作则存入的是删除之前的值,如果是insert或update操作的话则存入的是修改后的值,表的结构如下:
CREATE TABLE [dbo].[Modify_Column_Value] (
[Table_name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Column_name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Column_value] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[modify_date] [datetime] NOT NULL ,
[modify_type] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
Temp_Column_Value这是一个存放临时值的表,在每一次从deleted或者inserted表中获得相对列的数据时,就将该数据存放至此,表的结构如下:
CREATE TABLE [dbo].[Temp_Column_Value] (
[Temp_Column_Value] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
上述三个表均放在OpenSource数据库中。