Mam kod SQL, który musi zostać wykonany, jeśli określony widok istnieje w bazie danych. Jak powinienem sprawdzić, czy widok istnieje?
EDYCJA: używany DBMS to Microsoft SQL Server
Mam kod SQL, który musi zostać wykonany, jeśli określony widok istnieje w bazie danych. Jak powinienem sprawdzić, czy widok istnieje?
EDYCJA: używany DBMS to Microsoft SQL Server
DLA SERWERA SQL
IF EXISTS(select * FROM sys.views where name = '')
sys.schema
tu dołączyć .Istnieje już wiele sposobów określonych powyżej, ale brakuje jednego z moich ulubionych.
GDZIE
nView
to nazwa widokuUPDATE 2017-03-25: jak @hanesjw zasugerował, aby porzucić użycie procedury sklepu
P
zamiastV
jako drugiego argumentuOBJECT_ID
źródło
To najbardziej przenośny i najmniej uciążliwy sposób:
Edycja: To działa na SQL Server i nie wymaga dołączania do,
sys.schemas
aby uzyskać schemat widoku. Jest to mniej ważne, jeśli wszystko tak jestdbo
, ale jeśli dobrze wykorzystujesz schematy, powinieneś o tym pamiętać.Każdy RDBMS ma swój własny sposób sprawdzania metadanych, takich jak ten, ale w
information_schema
rzeczywistości jest to ANSI i myślę, że Oracle i najwyraźniej SQLite są jedynymi, które nie obsługują go w jakiś sposób.źródło
źródło
Dla ludzi, którzy sprawdzają istnienie, spadają
View
użyj tegoOd
SQL Server 2016 CTP3
możesz użyć nowych instrukcji DIE zamiast dużychIF
owijarkiskładnia
Zapytanie:
Więcej informacji tutaj
źródło
jeśli jest to Oracle, użyjesz tabeli „all_views”.
To naprawdę zależy od twoich dbms.
źródło
Jeśli chcesz sprawdzić poprawność i spójność wszystkich istniejących widoków, możesz użyć następującego zapytania
źródło
W SQL Server,
źródło
Aby rozwinąć odpowiedź Kevina.
źródło
Dostępność widoku możesz sprawdzić na różne sposoby
DLA SERWERA SQL
użyj sys.objects
użyj sysobjects
użyj sys.views
użyj INFORMATION_SCHEMA.VIEWS
użyj OBJECT_ID
użyj sys.sql_modules
źródło