PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Мога ли да изпълнявам на сухо/sandbox sql команди?

В Postgres можете да правите много с транзакции които са върнати назад в края:

BEGIN;

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

ROLLBACK;   -- !

Повече в ръководството:BEGIN ROLLBACK

Имайте предвид обаче, че някои неща не могат да бъдат върнати назад. Например, последователностите не се връщат назад. Или някои специални команди като dblink обаждания.

И някои команди не могат да се изпълняват в транзакция с други. Като CREATE DATABASE или VACUUM .

Освен това може да има странични ефекти при едновременно натоварване, като блокировки. Малко вероятно обаче. Можете да зададете ниво на изолация на транзакцията според вашите изисквания, за да изключите всякакви странични ефекти (с известна цена за производителността).

Не бих направил това с разумни данни. Рискът от случайно извършване е твърде голям. А позволяването на потребителите да изпълняват произволен код е риск, който трудно може да се ограничи. Но за тренировъчна среда това трябва да е достатъчно.

Архивирайте го с шаблонна база данни . Ако нещо се обърка, това е най-бързият начин за възстановяване на основно състояние. Пример (вижте последната глава):
Съкращение на всички таблици в база данни на Postgres

Това може да се използва и като алтернатива за груба сила :за предоставяне на чиста нова база данни за всеки обучаем.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 начина за изброяване на всички съхранени процедури, които препращат към таблица в PostgreSQL

  2. Генериране на обект за единична таблица

  3. неразпознат автоматичен конфигурационен параметър в PostgreSQL NodeJS

  4. Връзка с Google Cloud PostgreSQL чрез JDBC с SSL

  5. Python psql \copy CSV на отдалечен сървър