Frage

Gibt es eine Standardmethode eine Tabellenerstellung in einer Datenbank zu simulieren, indem Sie SQL verwenden? Ich will nicht die Tabelle überprüfen erstellt, nur um werden, wenn sie erstellt werden können. Eine Möglichkeit wäre, es zu erstellen und es dann wieder zu löschen. Jede andere Art und Weise?

War es hilfreich?

Lösung

Die meisten großen Server unterstützen Transaktions DDL, so dass Sie etwas in dieser Richtung tun:

begin transaction

create table Foo ...

rollback transaction

Theoretisch im Fehlerfall es zurück zu Client gemeldet werden soll, aber Tabelle wird nicht ganz erstellt werden.

Andere Tipps

Abhängig von der SQL-DBMS Sie interessiert sind beispielsweise Postgres unterstützt transaktionale DDL und folgendes funktioniert:.

START TRANSACTION;
CREATE TABLE ... ();
<check for error here>
ROLLBACK;

Wenn Sie MySQL verwenden, können Sie es schaffen, einen vorübergehenden Speicher-Engine verwenden, wie MEMORY .

Wirklich, müssen Sie es tatsächlich schaffen, dass alles in Ordnung zu machen.

Fremdschlüssel verweist, Funktionen als Standard verwendet oder Einschränkungen überprüfen oder in berechneten Spalten werden, bis nicht geprüft Zeit auszuführen.

Eine grundlegende Methode (SQL Server) ist „ SET FMTONLY ON verwenden “.

Nützlich für die Überprüfung der Aussage gültig ist, wird aber nicht sagen Sie alles (zum Beispiel, wenn die Tabelle bereits vorhanden ist).

Dies wird erfolgreich sein:

SET FMTONLY ON
EXECUTE ('CREATE TABLE SomeTable(SomeField INTEGER)')
SET FMTONLY OFF

Dies wird nicht:

SET FMTONLY ON
EXECUTE ('CREATE TABLE SomeTable(dodgysyntax)')
SET FMTONLY OFF

Dieser Ansatz ist wahrscheinlich nützlicher für SELECT-Anweisungen, das ist, was ich es in der Vergangenheit verwendet habe. Es ist nicht eigentlich die Anweisung auszuführen, aber die Metadaten zurück aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top