dlaczego ta praca kod bez problemu:Różnica między tabelami i tabel Temp
drop table t1
select * into t1 from master..spt_values
drop table t1
select * into t1 from master..spt_values
Output
Msg 3701, Level 11, State 5, Line 1
Cannot drop the table 't1', because it does not exist or you do not have permission.
(2508 row(s) affected)
(2508 row(s) affected)
ale ten kod nie działa:
drop table #t1
select * into #t1 from master..spt_values
drop table #t1
select * into #t1 from master..spt_values
Wyjście
Msg 2714, Level 16, State 1, Line 4
There is already an object named '#t1' in the database.
jaka jest różnica między tabelami i tabelami temperatur w tym kodzie?
Dobre pytanie. Aby lepiej zilustrować twój punkt [ten SQLFiddle] (http://sqlfiddle.com/#!3/d41d8/5748) nie działa, ale zastąpienie zwykłymi tabelami robi – RichardTheKiwi
[Wyjaśnienie tego zachowania jest tutaj] (http: //sqlblog.com/blogs/michael_zilberstein/archive/2008/08/28/Name-resolution-in-SQL-Server.aspx) Dla 't1' instrukcje podlegają odroczonej kompilacji, ale tak nie jest w przypadku' # t1 ' –
Tak samo, jak na marginesie" [DROP TABLE i CREATE TABLE nie powinny być wykonywane w tej samej tabeli w tej samej partii. W przeciwnym razie może wystąpić nieoczekiwany błąd.] (http://msdn.microsoft.com/en-us/ library/ms173790.aspx) " –