PostgreSQL

Lệnh PostgreSQL DROP SCHEMA

Lệnh PostgreSQL DROP SCHEMA
Được viết bởi Minh Hoàng

Series chia sẻ về PostgreSQL – Cơ sở dữ liệu mã nguồn mở tiên tiến nhất thế giới.

Bài viết này sẽ mô tả cách sử dụng câu lệnh PostgreSQL DROP SCHEMA để xóa một schema và các đối tượng của nó.

Sử dụng cú pháp:

DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ];

Trong cú pháp này:

  • Chỉ định tên schema mà bạn muốn xóa sau từ khóa DROP SCHEMA.
  • Sử dụng tùy chọn IF EXISTS để xóa chỉ trong trường hợp schema có tồn tại.
  • Sử dụng tùy chọn RESTRICT để xóa chỉ trong trường hợp schema là trống (empty), tức là nó không có chứa đối tượng (table, view,…) nào bên trong. Theo mặc định, PostgreSQL sử dụng RESTRICT.
  • Sử dụng CASCADE để xóa lược đồ và tất cả các đối tượng của nó như table, view,… và lần lượt tất cả các đối tượng phụ thuộc vào các đối tượng đó, mà không quan tâm schema có trống (empty) hay là không.

Để xóa schema, vai trò thực thi lệnh phải là superuser hoặc chủ sở hữu của schema. Nếu CASCADE được chỉ định, đối tượng sẽ bị xóa bất kể ai sở hữu nó.

Trước khi thực hiện các thao tác xóa schema, chúng ta sẽ kết nối đến database mydb để kiểm tra xem mydb đang có những schema nào.

Lệnh PostgreSQL DROP SCHEMA - Hình 1

#1/3: Sử dụng câu lệnh DROP SCHEMA để xóa một schema trống (empty)
DROP SCHEMA IF EXISTS myschema;

Lệnh PostgreSQL DROP SCHEMA - Hình 2

#2/3: Sử dụng câu lệnh DROP SCHEMA để xóa nhiều schema trống (empty)
DROP SCHEMA IF EXISTS myschema1, myschema2;

Lệnh PostgreSQL DROP SCHEMA - Hình 3

#3/3: Sử dụng câu lệnh DROP SCHEMA để xóa schema không trống (not empty)

Kiểm tra thông tin các đối tượng như table, view có trong schema schema_minhhoangblog:

\dt schema_minhhoangblog.*
\dv schema_minhhoangblog.*

Lệnh PostgreSQL DROP SCHEMA - Hình 4

Lệnh PostgreSQL DROP SCHEMA - Hình 5

Nếu xóa schema bình thường như trên:

DROP SCHEMA schema_minhhoangblog;

Lệnh PostgreSQL DROP SCHEMA - Hình 6

thì sẽ bị thông báo lỗi:
ERROR: cannot drop schema scm because other objects depend on it
 DETAIL: table schema_minhhoangblog.deliveries depends on schema schema_minhhoangblog
 view schema_minhhoangblog.deliveries_view depends on schema schema_minhhoangblog
 HINT: Use DROP … CASCADE to drop the dependent objects too.

Vì vậy, nếu schema không trống và bạn muốn xóa schema và các đối tượng của nó, bạn phải sử dụng tùy chọn CASCADE:

DROP SCHEMA schema_minhhoangblog CASCADE;

Xóa thành công:

Lệnh PostgreSQL DROP SCHEMA - Hình 6

Kiểm tra lại thông tin các đối tượng như table, view thì đã không tìm thấy trong schema schema_minhhoangblog nữa:

Lệnh PostgreSQL DROP SCHEMA - Hình 7

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

Translate »