Sử dụng select ... as ...
để tạo bảng không bao giờ sao chép các ràng buộc. Nếu bạn muốn bảng mới kế thừa các ràng buộc từ các bảng ban đầu, bạn phải tạo các ràng buộc mới theo cách thủ công.
Như @Davek đã chỉ ra, not null
các ràng buộc sẽ được sao chép từ một bảng duy nhất select ... as ...
. Tôi tưởng tượng đó là bởi vì chúng đều là thuộc tính cột và ràng buộc. Tuy nhiên, khi cột có nhiều hơn một nguồn, thì điều hợp lý là Oracle sẽ không cố gắng áp dụng ràng buộc đó.
Để trả lời cho câu hỏi tiếp theo "có thể đưa ra tableC
các ràng buộc giống nhau từ tableA
hoặc tableB
, sau một CTA? ":
Tất nhiên là có thể, nhưng không có lệnh nào để làm điều đó. Bạn có thể viết một thủ tục sử dụng SQL động để sao chép các ràng buộc. Tuy nhiên, trừ khi bạn đang tìm cách tự động hóa hành vi này, nói chung sẽ dễ dàng hơn để trích xuất DDL bằng IDE và thay đổi tên bảng.