根据最近更新的记录更新另一个数据库表值

时间:2015-10-07 11:05:46

标签: c# sql asp.net database-administration

我有一个场景,我必须根据最近更新的记录从另一个数据库表更新数据库表中的记录。

如果记录是新的插入语句将触发 如果记录已更新,则更新语句将触发

这里的问题是我们不知道查询返回表的数量 以及列名。

这是代码

DECLARE @RowsToProcess  int
DECLARE @CurrentRow     int
declare @tablenames varchar(100)
DECLARE @sampleTable TABLE(RowID int not null primary key identity(1,1), tablename varchar(100),last_user_update datetime)
insert into @sampleTable SELECT [TableName] = OBJECT_NAME(object_id),last_user_update
FROM    sys.dm_db_index_usage_stats
WHERE    database_id = DB_ID('DATABASE')
select * from @sampleTable
SET @RowsToProcess=@@ROWCOUNT
print @RowsToProcess
SET @CurrentRow=0
WHILE @CurrentRow<@RowsToProcess
BEGIN
    SET @CurrentRow=@CurrentRow+1
    SELECT @tablenames= tablename from @sampleTable
        WHERE RowID=@CurrentRow
   print @tablenames
   EXEC('INSERT INTO '+ 'SM_' + @tablenames +'  SELECT * FROM  '+@tablenames + 'Where flag = NULL' )
END

1 个答案:

答案 0 :(得分:0)

在SQL Server中,您可以使用triggers。 SQL Server触发器可以在插入,更新,删除或替代插入等时触发。

您可以开始使用this lesson