Ради интереса я решил написать код, в котором перечислены все таблицы и количество записей, которые были обновлены сегодня (с использованием SQL Server). Например:
TableName ModifiedToday
table1 0
table2 5
table3 2
Первым шагом было создание временной таблицы со всеми именами таблиц в базе данных, содержащей поле date_modified:
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
DROP TABLE #temp
SELECT
t.name AS 'TableName'
,-1 AS 'ModifiedToday'
into #temp
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%date_modified%'
ORDER BY TableName
Далее я пытаюсь выполнить обновление временной таблицы на основе содержимого таблиц. Тем не менее, я не так хорошо знаком с COALESCE или циклами в SQL и пытаюсь обновиться, используя имя таблицы. Есть идеи?
DECLARE @tname varchar(200) = ''
WHILE ( SELECT COUNT(*) FROM #temp WHERE ModifiedToday = -1) >0
BEGIN
UPDATE #temp
SET @tname = TableName,
ModifiedToday = (COALESCE(CHAR(500), '') + 'SELECT COUNT(*) FROM '+ @tname + ' WHERE DATEDIFF(day,GETDATE(),isnull(date_modified,0)) = 0')
WHERE @tname = TableName
BREAK
END