Ich versuche, die Struktur einer Tabelle innerhalb einer Funktion mithilfe von dynamischem SQL neu zu erstellen.
EXECUTE 'CREATE TABLE ' || my_table_name || '_bk' ||
' (like ' || _my_table_name || ')';
Das wird ähnlich sein wie:
CREATE TABLE my_table_bk
(like my_table);
Aber ich muss alle Einschränkungen verwerfen. Bei Verwendung EXCLUDING CONSTRAINTS
der Like-Optionen werden weiterhin die NOT NULL-Einschränkungen kopiert (Dokumentation bestätigt dieses Verhalten):
CREATE TABLE my_table_bk
(like my_table EXCLUDING CONSTRAINTS);
Die Frage ist, wie ich die Tabellenstruktur ohne die NOT NULL-Einschränkungen neu erstellen oder alternativ alle NOT NULL-Einschränkungen in einer Tabelle entfernen kann.
quelle