我有一个场景,我必须根据最近更新的记录从另一个数据库表更新数据库表中的记录。
如果记录是新的插入语句将触发 如果记录已更新,则更新语句将触发
这里的问题是我们不知道查询返回表的数量 以及列名。
这是代码
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
答案 0 :(得分:0)
在SQL Server中,您可以使用triggers。 SQL Server触发器可以在插入,更新,删除或替代插入等时触发。
您可以开始使用this lesson