【发布时间】:2009-06-16 01:13:06
【问题描述】:
我正在寻找一种使用存储过程转发一些演示数据的简洁方法。我要转发的数据是日期类型。由于我的应用程序的性质,我的应用程序中的一些数据只会在数据中的某些日期在未来时才会出现。我希望这是有道理的。 :S
由于我的数据库一直在扩展,我正在考虑编写一个存储过程,该过程基本上转发我的数据库中属于演示用户帐户的所有表中的所有日期。我还将跟踪演示数据上次转发的日期。显然,存储过程将在登录演示数据时运行,并且当演示数据被转发的最后日期与当前日期之间的差异达到一定的时间差时(例如 30 天)。这样我就不必不断地修改脚本。
现在进入技术部分:
我正在使用它来检索数据库中的所有表:
Select
table_name
from
Information_Schema.Tables
Where
TABLE_TYPE like 'BASE TABLE'
and table_name not like 'Report_%'
and table_name not in ('Accounts', 'Manifest', 'System', 'Users')
我需要的是一种遍历表名、查找列名和列类型的方法。然后我希望更新每个表中日期时间类型的所有列。我读过 SQL 中的循环并不理想,但我想尽量减少数据库调用的数量,而不是将其放在服务器端代码中。
我是不是走错了路来解决这个问题?
提前致谢。
【问题讨论】:
-
不知道哪些列需要先验递增?将架构中的每个日期都提前 30 天似乎是个坏主意。如果有人出现并添加了不应增加的日期列怎么办?
-
我和 JP 在一起。由于您的数据不断变化,列不能改变吗?另外,您使用的是 MySQL 还是 SQL Server?我相信两者都有关于其内部工作的非常不同的元数据(即 - 如何分辨什么是日期时间字段)。
标签: sql mysql sql-server sql-server-2005