PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tôi có thể làm khô các lệnh sql run / sandbox không?

Trong Postgres, bạn có thể làm được nhiều điều với giao dịch được quay trở lại ở cuối:

BEGIN;

UPDATE foo ...:
INSERT bar ...;
SELECT baz FROM ...;
CREATE TABLE abc...;   -- even works for DDL statements
DROP   TABLE def...;
ALTER  TABLE ghi ...:

ROLLBACK;   -- !

Xem thêm trong hướng dẫn: BEGIN ROLLBACK

Tuy nhiên, hãy lưu ý rằng một số thứ không thể quay trở lại. Đối với các trường hợp, trình tự không quay trở lại. Hoặc một số lệnh đặc biệt như dblink cuộc gọi.

Và một số lệnh không thể chạy trong giao dịch với những lệnh khác. Giống như CREATE DATABASE hoặc VACUUM .

Ngoài ra, có thể có các tác dụng phụ với tải đồng thời, như bế tắc. Tuy nhiên, không có khả năng. Bạn có thể đặt mức cách ly giao dịch theo yêu cầu của bạn để loại trừ bất kỳ tác dụng phụ nào (với một số chi phí cho hiệu suất).

Tôi sẽ không làm điều này với dữ liệu hợp lý. Rủi ro do tai nạn là quá lớn. Và việc để người dùng thực thi mã tùy ý là một rủi ro khó có thể tránh khỏi. Nhưng đối với một môi trường đào tạo, điều đó phải đủ tốt.

Sao lưu nó bằng cơ sở dữ liệu mẫu . Nếu xảy ra sự cố, đó là cách nhanh nhất để khôi phục trạng thái cơ bản. Ví dụ (xem chương cuối):
Cắt bớt tất cả các bảng trong cơ sở dữ liệu Postgres

Điều này cũng có thể được sử dụng làm thay thế bạo lực bạo lực :để cung cấp một cơ sở dữ liệu mới nguyên sơ cho mỗi học viên.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bí danh hàm cho hàm mặc định của Postgres

  2. Node.js:Định nghĩa các lược đồ Postgres trong Sequelize

  3. PostgreSQL, Tổng hợp tùy chỉnh

  4. Đối chiếu kỳ lạ với postgresql

  5. Hàm với truy vấn SQL không có đích cho dữ liệu kết quả