Używając select ... as ...
utworzyć tabelę nigdy kopiuje wiązania. Jeśli chcesz, aby nowa tabela dziedziczyła ograniczenia z oryginalnych tabel, musisz ręcznie utworzyć nowe ograniczenia.
Jak wskazuje @Davek, not null
ograniczenia zostaną skopiowane z pojedynczej tabeli select ... as ...
. Wyobrażam sobie, że dzieje się tak, ponieważ są to zarówno atrybuty kolumn, jak i ograniczenia. Jednak gdy kolumna ma więcej niż jedno źródło, rozsądne jest, aby Oracle nie próbował zastosować tego ograniczenia.
W odpowiedzi na pytanie uzupełniające „czy byłoby możliwe podanie tableC
te same ograniczenia z tableA
lub tableB
, po wezwaniu do działania?”:
Oczywiście jest to możliwe, ale nie ma jednej komendy, aby to zrobić. Możesz napisać procedurę, która używa dynamicznego SQL do kopiowania ograniczeń. Jeśli jednak nie chcesz zautomatyzować tego zachowania, zazwyczaj łatwiej będzie wyodrębnić DDL za pomocą IDE i zmienić nazwę tabeli.