Tương đương với DB2 cho DROP của MySQL .. NẾU EXISTS


7

Có một tương đương trong DB2 cho MySQL (hoặc PostgreSQL):

DROP TABLE IF EXISTS sometable;

Câu trả lời:


4

Không.

Bạn sẽ cần một IFmệnh đề để kiểm tra sự tồn tại của bảng và sau đó là một câu lệnh riêng để thực sự loại bỏ nó nếu nó tồn tại.


1
@ Pivotron: Nick đúng về điều này. Một ví dụ về câu trả lời của Nick là trong StackOverflow: stackoverflow.com/a/3976691/491757 . BTW +1 cho Nick !!!
RolandoMySQLDBA

2

Giải pháp thay thế được đưa ra ở đây :

Tạo chức năng lưu trữ db2perf_quiet_drop():

CREATE PROCEDURE db2perf_quiet_drop( IN statement VARCHAR(1000) )
LANGUAGE SQL
BEGIN
   DECLARE SQLSTATE CHAR(5);
   DECLARE NotThere    CONDITION FOR SQLSTATE '42704';
   DECLARE NotThereSig CONDITION FOR SQLSTATE '42883';

   DECLARE EXIT HANDLER FOR NotThere, NotThereSig
      SET SQLSTATE = '     ';

   SET statement = 'DROP ' || statement;
   EXECUTE IMMEDIATE statement;
END

và sử dụng nó như Begin atomic call db2perf_quiet_drop('table my_table'); End


2

Bạn có thể sử dụng một khối đồng nghĩa

BEGIN
 DECLARE CONTINUE HANDLER FOR SQLSTATE '42704'
   BEGIN END;
 EXECUTE IMMEDIATE 'DROP TABLE sometable';
END @
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.