Scope abgeleiteter Tabellen in SQL Server
-
26-09-2019 - |
Frage
Ich habe geschaut, in SQL vor kurzem und ein wenig zu erkunden. in Bezug auf Temp Tabellen Ich habe 3 verschiedene temporäre Tabellentypen entdeckt:
1) CREATE TABLE #TempTable
2) DECLARE TABLE @TempTable
3) SELECT * FROM (SELECT * FROM Customers) AS TempTable
Jetzt verstehe ich den Umfang hinter der #TempTable und die @TempTable Typen, aber was ist die abgeleitete Tabelle wie in Beispiel 3? Woher nimmt diese abgeleitete Tabelle gespeichert? und wenn es in 1 Transaktion deklariert, kann eine zweite Transaktion Zugriff darauf oder ist die Scoping-abgeleiteter Tabellen das gleiche wie in Beispiel 1 und 2?
Lösung
Dies ist abhängig von der tatsächlichen RDBMS Sie verwenden - nehme ich an, Sybase oder SQL Server (aber vielleicht auch für alle wahr sein)
SELECT * FROM (SELECT * FROM Customers) AS TempTable
TempTable ist nur für die aktuelle SQL-Anweisung also nur die Auswahl.
SELECT * FROM Customers into tempdb..TempTable
würde eine neue Tabelle in der tempdb erstellen whichg explizit gelöscht werden müßte
Andere Tipps
1) CREATE TABLE #TempTable --local temporäre Tabelle
Lokale temporäre Tabellen sind nur sichtbar, in der aktuellen Sitzung und können zwischen verschachtelten gespeicherte Prozeduraufrufen geteilt werden: