Mam db A i db B. Na początku procedury przechowywanej chcę utworzyć kopię zapasową wszystkich wierszy od B.mytable
do B.mytablebackup
. Reszta procedury przechowywanej działa w oparciu o tabele na db A (które zbierają dane i zapisują je do B.mytable
).Jak sprawdzić istnienie tabeli z innego sql dbl?
więc sprawdzić, czy B.mytablebackup
istnieje
IF EXISTS(SELECT 1 FROM B.dbo.mytablebackup)
a jeśli tak, to procedura przechowywana robi się
INSERT INTO B..mytablebackup SELECT * FROM B..mytable
Jeśli nie istnieje to robi
SELECT * INTO B..mytablebackup from B..mytable
Ale po wykonaniu procedury przechowywanej otrzymuję komunikat o błędzie
Istnieje już obiekt o nazwie „mytablebackup” w bazie
dodałem Print
oświadczenia i wykonanie bierze „nie istnieje” oddział IF.
Co robię źle?
*** SQL *** jest po prostu * językiem danych strukturalnych * - języka używanego przez wiele systemów baz danych, ale nie jest produktem bazy danych ... wiele rzeczy jest specyficznych dla dostawcy - więc naprawdę musimy wiedzieć, jaki ** system baz danych ** (i której wersji) używasz (proszę odpowiednio zaktualizować tagi) ... –
@marc_s Przypuszczam, że jest to MSSQL oparty na 'db.schema.tbl' formacie – Kermit
' IF EXISTS (SELECT 1 FROM B.dbo.mytablebackup) 'sprawdza, czy istnieje co najmniej jeden wiersz * w ciągu' 'mytablebackup'. Nie informuje o tym, czy sama tabela * istnieje * (jeśli tabela nie istnieje, spowoduje błąd kompilacji) –