如果不存在DB2,则创建表/列-不使用sp,仅手动查询

时间:2020-07-12 07:58:24

标签: sql create-table db2-400

我尝试使用SQL语法:

CREATE TABLE IF NOT EXISTS PWRNTCDT.customers_contacts(
    customer_id varchar(10) NOT NULL DEFAULT '',
  contact_index INT NOT NULL,
  is_primary SMALLINT NOT NULL,
  f_name varchar(40) DEFAULT NULL,
  l_name varchar(40) DEFAULT NULL,
  job_title varchar(60) DEFAULT NULL,
  phone varchar(30) DEFAULT NULL,
  mobile varchar(30) DEFAULT NULL,
  email varchar(254) DEFAULT NULL
);

,我收到一个错误,指示“存在”部分存在语法错误。 在网上找不到任何东西。 谢谢!

1 个答案:

答案 0 :(得分:1)

在DB2 for IBM i中没有这样的CREATE TABLE功能。
CREATE OR REPLACE但没有CREATE IF NOT EXISTS
请参阅文档中的CREATE TABLE语句说明。

但是您可以为此使用Dynamic compound statement

-- Use some another statement terminator in your tool you run this statement from like "@" as below
-- Or don't use this statement terminator at all, if you run the statement from some external program
BEGIN
  IF NOT EXISTS
  (
  SELECT 1 
  FROM QSYS2.SYSTABLES
  WHERE TABLE_SCHEMA='PWRNTCDT' AND TABLE_NAME='CUSTOMER_CONTACTS'
  ) THEN

  CREATE TABLE PWRNTCDT.customers_contacts
  (
  customer_id varchar(10) NOT NULL DEFAULT '',
  contact_index INT NOT NULL,
  is_primary SMALLINT NOT NULL,
  f_name varchar(40) DEFAULT NULL,
  l_name varchar(40) DEFAULT NULL,
  job_title varchar(60) DEFAULT NULL,
  phone varchar(30) DEFAULT NULL,
  mobile varchar(30) DEFAULT NULL,
  email varchar(254) DEFAULT NULL
  );

  END IF;
END@