Bài học theo mô-đun (3/4)
Thay đổi cấu trúc: ALTER TABLE
Nhu cầu của ứng dụng thay đổi theo thời gian và cơ sở dữ liệu phải theo kịp. ALTER TABLE là lệnh (cực kỳ linh hoạt) dành riêng cho việc sửa đổi các lược đồ bảng hiện có _mà không cần phải loại bỏ chúng (gây rủi ro cho dữ liệu bên trong).
Sửa đổi cột (ADD/DROP/ALTER)
Thêm một cột đòi hỏi phải cẩn thận. Nếu bảng đã chứa dữ liệu, việc thêm cột "NOT NULL" sẽ gây ra lỗi trong Postgres: nó nên chèn gì vào các hàng cũ? Bạn phải liên kết DEFAULT.
-- Aggiungiamo una colonna
ALTER TABLE users ADD COLUMN age INTEGER; -- Ok, sarà NULL ovunque
-- Aggiungiamo NOT NULL, quindi diamogli un deafult
ALTER TABLE users ADD COLUMN active BOOLEAN NOT NULL DEFAULT true;
-- Cancellare una colonna (ATTENZIONE! i dati andranno persi)
ALTER TABLE users DROP COLUMN age;Không chỉ thêm hoặc xóa: bạn thường cần định cấu hình lại type của một cột hoặc một trong các ràng buộc của cột đó:
-- Cambia il tipo di dato (postgreSQL farà un 'cast' dei dati esistenti se possibile)
ALTER TABLE users ALTER COLUMN username TYPE VARCHAR(100);
-- Aggiunge il vincolo NOT NULL
ALTER TABLE users ALTER COLUMN username SET NOT NULL;
-- Rimuove il vincolo NOT NULL (ritorna ad accettare null)
ALTER TABLE users ALTER COLUMN username DROP NOT NULL;Thêm các ràng buộc khi chạy
Giống như CREATE TABLE, chúng ta có thể sử dụng ALTER TABLE để đính kèm CONSTRAINT vào bảng đã được sử dụng trong ứng dụng sản xuất.
-- Aggiungi un nuovo Foreign Key
ALTER TABLE orders
ADD CONSTRAINT fk_order_status FOREIGN KEY (status_id) REFERENCES statuses(id);
-- Aggiungi un CHECK
ALTER TABLE products
ADD CONSTRAINT price_positive CHECK (price > 0);
-- E per distruggerli?
ALTER TABLE products DROP CONSTRAINT price_positive;Đổi tên
Cả cột và bảng đều có thể được đổi tên:
ALTER TABLE users RENAME TO auth_users;
ALTER TABLE auth_users RENAME COLUMN username TO login_name;Hãy thử nó
Bảng 'sản phẩm' hiện có cột 'tên'. Sửa đổi bảng bằng cách đổi tên cột 'tên' thành 'tiêu đề'. Sử dụng thao tác RENAME COLUMN.
Hiển thị gợi ý
Cú pháp: ALTER TABLE ... ĐỔI TÊN CỘT ... ĐẾN ...
Giải pháp khả dụng sau 3 lần thử
Thêm các ràng buộc trong hậu kỳ
Sửa đổi bảng 'sản phẩm' bằng cách thêm ràng buộc KIỂM TRA (có tên là 'verifica_prezzo') yêu cầu giá (cột 'price') phải lớn hơn 0. Ràng buộc phải được thêm vào mà không bỏ cột ban đầu.
Hiển thị gợi ý
Cú pháp: ALTER TABLE table THÊM tên ràng buộc KIỂM TRA (...)
Giải pháp khả dụng sau 3 lần thử