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

Làm thế nào để bỏ một bảng dựa trên điều kiện IF trong postgres?

IF không thể được sử dụng trong SQL, điều này chỉ hợp lệ cho PL / pgSQL.

Bạn cần làm điều này với SQL động bên trong một khối PL / pgSQL ẩn danh. Một cái gì đó như:

do
$$
declare
  l_count integer;
begin
  select count(*)
     into l_count
  from pg_class c
    join pg_namespace nsp on c.relnamespace = nsp.oid
  where c.relname = 'mytable' 
    and c.relpersistence = 'u'
    and nsp.nspname = 'public';

  if l_count = 1 then 
    execute 'drop table mytable';
  end if;

end;
$$

Bạn có thể nên mở rộng select tuyên bố tham gia chống lại pg_namespace và bao gồm tên giản đồ trong điều kiện ở đâu của bạn để đảm bảo rằng bạn không vô tình làm rơi một bảng khỏi giản đồ sai.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng tham số làm tên cột trong hàm Postgres

  2. Cách sử dụng postgresql bất kỳ với dữ liệu jsonb

  3. ĐẶT HÀNG động BẰNG và ASC / DESC trong một hàm plpgsql

  4. Tôi có thể nhận định dạng ngày tùy chỉnh cho pluck (danh sách) trên Laravel5 không?

  5. Có thể viết Bộ chuyển đổi kiểu dữ liệu để xử lý các cột JSON postgres không?