sgi*_*ons 2 .net sql t-sql sql-server-2005
我试图从一个表插入一行的副本到另一个具有相同模式的表,并添加一列(时间戳)以提供MS Sql Server 2005中第一个表的"历史记录".
所以,我的查询,没有附加列将是:
"SELECT INTO [WebsiteHistory] FROM [Website]"
Run Code Online (Sandbox Code Playgroud)
我也希望填充时间戳列,但我不确定如何最好地执行此操作.我想做点什么:
"SELECT Website.*, '" + DateTime.Now.ToShortDateString() + "' INTO [WebsiteHistory] FROM [Website]"
Run Code Online (Sandbox Code Playgroud)
但这不应该工作,特别是如果timestamp列不是最后一列.有没有办法做到这一点?
Tom*_*lak 14
被警告.这有效,但既不好也不值得推荐:
INSERT
WebsiteHistory
SELECT
*,
GETDATE()
FROM
Website
WHERE
Id = @WebsiteId
Run Code Online (Sandbox Code Playgroud)
这假定WebsiteHistory具有与Website(你说它有)相同的结构,另外还有一个额外的DATETIME字段.
更好的是,因为它更加安全无虞(以更冗长的代价为代价):
INSERT
WebsiteHistory
(
Id,
Field1,
Field2,
Field3,
Field4,
ModifiedDate
)
SELECT
Id,
Field1,
Field2,
Field3,
Field4,
GETDATE()
FROM
Website
WHERE
Id = @WebsiteId
Run Code Online (Sandbox Code Playgroud)