Próbuję utworzyć prosty skrypt, aby zrzucić wyniki kompleksowego widzenia się do tabeli raportowania. Użyłem synonimów, aby uprościć dostosowywanie nazw widoków i tabel.Jak mogę sprawdzić, czy tabela za synonim istnieje
Pomysł polega na tym, że użytkownik skryptu może umieścić nazwę widoku, z którego chce korzystać jako źródło, oraz nazwę docelowej tabeli raportowania na początku i na końcu, z której pochodzą. Jeśli tabela nie istnieje, skrypt powinien ją utworzyć. Jeśli tabela już istnieje, skrypt powinien kopiować tylko rekordy z widoku, które nie znajdują się już w tabeli.
Skrypt poniżej obejmuje wszystkie te wymagania, ale nie mogę znaleźć dobry sposób, aby sprawdzić, czy tabela za synonim już istnieje:
CREATE SYNONYM SourceView FOR my_view
CREATE SYNONYM TargetReportingTable FOR my_table
-- Here's where I'm having trouble, how do I check if the underlying table exists?
IF (SELECT COUNT(*) FROM information_schema.tables WHERE table_name = TargetReportingTable) = 0
BEGIN
-- Table does not exists, so insert into.
SELECT * INTO TargetReportingTable FROM SourceView
END
ELSE
BEGIN
-- Table already exists so work out the last record which was copied over
-- and insert only the newer records.
DECLARE @LastReportedRecordId INT;
SET @LastReportedRecordId = (SELECT MAX(RecordId) FROM TargetReportingTable)
INSERT INTO TargetReportingTable SELECT * FROM SourceView WHERE RecordId > @LastReportedRecordId
END
DROP SYNONYM SourceView
DROP SYNONYM TargetReportingTable
wiem, może po prostu dostać użytkownikowi skryptu aby skopiować nazwę tabeli do wiersza "information_schema", a także do synonimu u góry, ale pozostawia pole do błędu.
wiem też mogę coś zrobić brudny jak umieścić nazwę tabeli do zmiennej i blat SQL jako ciąg, ale to sprawia, że czuję się trochę chory!
Czy istnieje ładny elegancki SQL dla mnie sposób, by sprawdzić, czy tabela za synonim istnieje? Lub zupełnie inny sposób rozwiązania problemu?
proszę oznaczyć swoje pytanie ze szczególnymi RDBMS, nie tylko „sql” – Barmar
Niestety, błąd rekrut. Dziękuję za edycję. – Tom
Czy możemy założyć punkty synonimów w bazie danych, w której znajduje się synonim, czy może wskazywać na inne pliki db? –