2014-10-22 140 views
-2

我是SQL服务器的新手。我的存储过程具有以下语句select * from database存储在数据库中

insert into [destination_table] 

select * from [source_table] 

两个表具有相同的架构。新列被添加到两个表中,列不为空。 在这种情况下,我是否需要再次编译存储过程。

+3

是的。并且使用*是一种不好的做法。 – thepirat000 2014-10-22 06:08:03

+1

你可能想读阿伦伯特兰的[坏习惯踢:使用select * /省略列列表](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/10/bad-habits-to-使用select-omitting-column-list.aspx) – 2014-10-22 06:12:42

+0

使用INSERT * *而不明确指定要插入哪些列也被认为是不好的做法... – 2014-10-22 06:12:46

回答

1

在这种情况下,我是否需要再次编译存储过程。

这里有一点误解。您不必重新编译过程,只要SQL Server认为有必要,SQL Server就会为您执行该过程。

在这种情况下,计划将从计划缓存中逐出,并在下次更改结构后执行该过程时自动替换为新计划。

相关问题