SnowConvert: Sybase IQ DDLs

CREATE の単語が先行するすべての DDL ステートメントの翻訳リファレンス。

CREATE TABLE

説明

現在のデータベースに新しいテーブルを作成します。列のリストを定義します。列はそれぞれ異なる型のデータを保持します。テーブルの所有者は、 CREATE TABLE コマンドの発行者です。

詳しくはCREATE TABLEドキュメントを参照してください。

文法構文

 CREATE [ { GLOBAL | LOCAL } TEMPORARY ] TABLE
   [ IF NOT EXISTS ] [ <owner>. ]<table-name>
    ( <column-definition> [ <column-constraint> ]  
   [ , <column-definition> [ <column-constraint> ] ]
   [ , <table-constraint> ]  ) 
   |{ ENABLE | DISABLE } RLV STORE
  
   [ IN <dbspace-name> ]
   [ ON COMMIT { DELETE | PRESERVE } ROWS ]
   [ AT <location-string> ]
   [PARTITION BY 
     <range-partitioning-scheme>
     | <hash-partitioning-scheme> 
     | <composite-partitioning-scheme> ]

<column-definition> ::=
   <column-name> <data-type> 
    [ [ NOT ] NULL ] 
    [ DEFAULT <default-value> | IDENTITY ] 
    [ PARTITION | SUBPARTITION ( <partition-name> IN  <dbspace-name> [ , ... ] ) ]

<default-value> ::=
   <special-value>
   | <string>
   | <global variable>
   | [ - ] <number>
   | ( <constant-expression> )
   | <built-in-function>( <constant-expression> )
   | AUTOINCREMENT
   | CURRENT DATABASE
   | CURRENT REMOTE USER
   | NULL
   | TIMESTAMP
   | LAST USER

<special-value> ::=
   CURRENT 
   { DATE | TIME | TIMESTAMP | USER | PUBLISHER }
   | USER

<column-constraint> ::=
   IQ UNIQUE ( <integer> )
   | { [ CONSTRAINT <constraint-name> ] 
     { UNIQUE  
        | PRIMARY KEY  
        | REFERENCES <table-name> [ ( <column-name> ) ] [ ON { UPDATE | DELETE } RESTRICT ] }
      [ IN <dbspace-name> ]
      | CHECK ( <condition> )
   }

<table-constraint> ::=
    [ CONSTRAINT <constraint-name> ] 
   {  { UNIQUE | PRIMARY KEY } ( <column-name> [ ,  ] )  
     [ IN <dbspace-name> ]
     | <foreign-key-constraint>
     | CHECK ( <condition> )
   }

<foreign-key-constraint> ::=
   FOREIGN KEY [ <role-name> ] [ ( <column-name> [ , <column-name> ]  ) ] 
   REFERENCES <table-name> [ ( <column-name> [ , <column-name> ]  ) ]
   [ <actions> ] [ IN <dbspace-name> ]

<actions> ::=
   [ ON { UPDATE | DELETE } RESTRICT ]

<location-string> ::=
   { <remote-server-name>. [ <db-name> ].[ <owner> ].<object-name>
      | <remote-server-name>; [ <db-name> ]; [ <owner> ];<object-name> }

<range-partitioning-scheme> ::=
   RANGE ( <partition-key> ) ( <range-partition-decl> [,<range-partition-decl>  ] )

<partition-key> ::= <column-name>

<range-partition-declaration> ::=
    <range-partition-name> VALUES <= ( {<constant> |  MAX } ) [ IN <dbspace-name> ]

<hash-partitioning-scheme> ::=
   HASH ( <partition-key> [ , <partition-key>,  ] )

<composite-partitioning-scheme> ::=
   <hash-partitioning-scheme> SUBPARTITION BY <range-partitioning-scheme>
Copy

AT LOCATION

説明

リモートテーブル(プロキシ)を作成します。(Sybase SQL 言語リファレンス)

この構文はSnowflakeではサポートされていません。

Grammar Syntax

 AT <location-string>
Copy

サンプルソースパターン

入力コード:

 CREATE TABLE t1
( 
    DATA VARCHAR(10)
)
AT 'SERVER_A.db1.joe.t1'; 
Copy
出力コード:
 CREATE OR REPLACE TABLE t1
( 
    DATA VARCHAR(10)
)
!!!RESOLVE EWI!!! /*** SSC-EWI-SY0002 - UNSUPPORTED REMOTE TABLE SYNTAX ***/!!!
AT 'SERVER_A.db1.joe.t1' 
Copy

SSC-EWI-SY0002: UNSUPPORTED REMOTE TABLE SYNTAX.

CONSTRAINTS

Description

これにより、テーブルのデータの正確性と信頼性が保証されます。制約とデータアクションの間に違反がある場合、アクションは中断されます。(Sybase SQL 言語リファレンス)

警告

この構文は部分的にサポートされています。

文法構文

 <table-constraint> ::=
    [ CONSTRAINT <constraint-name> ] 
   {  { UNIQUE | PRIMARY KEY } ( <column-name> [ ,  ] )  
     [ IN <dbspace-name> ]
     | <foreign-key-constraint>
     | CHECK ( <condition> )
   }
   
<foreign-key-constraint> ::=
   FOREIGN KEY [ <role-name> ] [ ( <column-name> [ , <column-name> ]  ) ] 
   REFERENCES <table-name> [ ( <column-name> [ , <column-name> ]  ) ]
   [ <actions> ] [ IN <dbspace-name> ]

<actions> ::=
   [ ON { UPDATE | DELETE } RESTRICT ]
Copy

サンプルソースパターン

入力コード:

 CREATE TABLE t_constraint (
    id1 INT NOT NULL,
    id2 INT PRIMARY KEY,
    age INT CHECK (age >= 18),
    email VARCHAR(255) UNIQUE,
    product_id INT REFERENCES products(id) ON DELETE RESTRICT IN SOMEPLACE,
    cod_iq VARCHAR(20) IQ UNIQUE(5),
    CONSTRAINT unq_name_email UNIQUE (name, email),
    CONSTRAINT fk_ord_line FOREIGN KEY (ord_id, line_id) REFERENCES ord_lines(ord_id,line_id)
);
Copy
出力コード:
 CREATE OR REPLACE TABLE t_constraint (
    id1 INT NOT NULL,
    id2 INT PRIMARY KEY,
    age INT
            !!!RESOLVE EWI!!! /*** SSC-EWI-0035 - CHECK STATEMENT NOT SUPPORTED ***/!!!
            CHECK (age >= 18),
    email VARCHAR(255) UNIQUE,
    product_id INT REFERENCES products (id) ON DELETE RESTRICT ,
    cod_iq VARCHAR(20)
                       !!!RESOLVE EWI!!! /*** SSC-EWI-SY0003 - UNSUPPORTED IQ UNIQUE CONSTRAINT ***/!!!
 IQ UNIQUE(5),
       CONSTRAINT unq_name_email UNIQUE (name, email),
       CONSTRAINT fk_ord_line FOREIGN KEY (ord_id, line_id) REFERENCES ord_lines (ord_id, line_id)
   )
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "sybase",  "convertedOn": "03/19/2025",  "domain": "test" }}'
;
Copy

関連 EWIs

SSC-EWI-0035: CHECK STATEMENT NOT SUPPORTED.

SSC-EWI-SY0003: UNSUPPORTED IQ UNIQUE CONSTRAINT.

DEFAULT

説明

作成テーブルの列のデフォルト値を定義します。

警告

この構文はSnowflakeで部分的にサポートされています。

文法構文

 <default-value> ::=
   <special-value>
   | <string>
   | <global variable>
   | [ - ] <number>
   | ( <constant-expression> )
   | <built-in-function>( <constant-expression> )
   | AUTOINCREMENT
   | CURRENT DATABASE
   | CURRENT REMOTE USER
   | NULL
   | TIMESTAMP
   | LAST USER

<special-value> ::=
   CURRENT 
   { DATE | TIME | TIMESTAMP | USER | PUBLISHER }
   | USER
Copy

サンプルソースパターン

入力コード:

 create table t_defaults
(
col1 timestamp default current utc timestamp,
col2 timestamp default current timestamp,
col3 varchar default current user,
col4 varchar default current remote user,
col5 varchar default last user,
col6 varchar default current publisher,
col7 varchar default current date,
col8 varchar default current database,
col9 varchar default current time,
col10 varchar default user,
col11 int default autoincrement,
col12 int identity,
col13 int default -10, 
col14 int default 'literal', 
col15 int default null
)
;
Copy
出力コード:
 CREATE OR REPLACE TABLE t_defaults
(
    col1 timestamp default CURRENT_TIMESTAMP,
    col2 timestamp default CURRENT_TIMESTAMP,
    col3 VARCHAR default CURRENT_USER,
    col4 VARCHAR default
                         !!!RESOLVE EWI!!! /*** SSC-EWI-SY0001 - UNSUPPORTED DEFAULT VALUE CURRENT REMOTE USER IN SNOWFLAKE ***/!!! current remote user,
    col5 VARCHAR default
                         !!!RESOLVE EWI!!! /*** SSC-EWI-SY0001 - UNSUPPORTED DEFAULT VALUE LAST USER IN SNOWFLAKE ***/!!! last user,
    col6 VARCHAR default
                         !!!RESOLVE EWI!!! /*** SSC-EWI-SY0001 - UNSUPPORTED DEFAULT VALUE CURRENT PUBLISHER IN SNOWFLAKE ***/!!! current publisher,
    col7 VARCHAR default CURRENT_DATE,
    col8 VARCHAR default CURRENT_DATABASE,
    col9 VARCHAR default CURRENT_TIME,
    col10 VARCHAR DEFAULT CURRENT_USER,
    col11 INT IDENTITY ORDER,
    col12 INT IDENTITY ORDER,
    col13 INT default -10,
    col14 INT default 'literal',
    col15 INT default null
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "sybase",  "convertedOn": "03/19/2025",  "domain": "test" }}'
;
Copy

(ENABLE | DISABLE) RLV STORE

説明

行レベルのバージョン管理ストア機能を制御します。(Sybase SQL 言語リファレンス)。

注釈

Snowflakeではこの構文は必要ありません。

文法構文

 { ENABLE | DISABLE } RLV STORE
Copy

サンプルソースパターン

入力コード:

 CREATE TABLE rlv_table
(id INT)
ENABLE RLV STORE;
Copy
出力コード:
 CREATE TABLE rlv_table
(id INT)
;
Copy

IF NOT EXISTS

説明

テーブルが存在しない場合にのみテーブルが作成されるようにし、 SQL スクリプトでの重複やエラーを防ぎます。(Sybase SQL 言語リファレンス)。

この構文はSnowflakeで完全にサポートされています。

Grammar Syntax

 IF NOT EXISTS
Copy

Sample Source Patterns

Input Code:

 CREATE TABLE IF NOT EXISTS table1 (
    col1 INTEGER
);
Copy
Output Code:
 CREATE TABLE IF NOT EXISTS table1 (
    col1 INTEGER
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "sybase",  "convertedOn": "03/19/2024" }}';
Copy

IN DBSPACE

Description

データストレージの DB 領域を指定します。(Sybase SQL 言語リファレンス)。

注釈

Snowflakeではこの構文は必要ありません。Snowflakeは自動的にストレージを処理します。

文法構文

 IN <dbspace-name>
Copy

サンプルソースパターン

入力コード:

 CREATE TABLE dbspace_table (
    id INT PRIMARY KEY
) 
IN my_dbspace;
Copy
出力コード:
 CREATE OR REPLACE TABLE dbspace_table (
    id INT PRIMARY KEY
); 
Copy

ON COMMIT

説明

コミット時の仮テーブルの動作を指定します。(Sybase SQL 言語リファレンス)

警告

この構文は部分的にサポートされています。

文法構文

 [ ON COMMIT { DELETE | PRESERVE } ROWS ]
Copy

サンプルソースパターン

入力コード:

 CREATE LOCAL TEMPORARY TABLE temp_employees (
    DATA VARCHAR(255)
) ON COMMIT DELETE ROWS;  

CREATE LOCAL TEMPORARY TABLE temp_projects (
    DATA VARCHAR(255)
) ON COMMIT PRESERVE ROWS; 
Copy
出力コード:
 CREATE OR REPLACE TEMPORARY TABLE temp_employees (
    DATA VARCHAR(255)
)
--    --** SSC-FDM-0008 - ON COMMIT NOT SUPPORTED **
--    ON COMMIT DELETE ROWS
    COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "sybase",  "convertedOn": "03/19/2025",  "domain": "test" }}'
;

CREATE OR REPLACE TEMPORARY TABLE temp_projects (
    DATA VARCHAR(255)
) ON COMMIT PRESERVE ROWS
    COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "sybase",  "convertedOn": "03/19/2025",  "domain": "test" }}'
;
Copy

関連 EWIs

SSC-FDM-0008: コミット時にサポートされていません。

PARTITION BY

説明

テーブルパーティションのすべての行は物理的にコロケートされています。(Sybase SQL 言語リファレンス)

注釈

Snowflakeではこの構文は必要ありません。

文法構文

 PARTITION BY 
     <range-partitioning-scheme>
     | <hash-partitioning-scheme> 
     | <composite-partitioning-scheme>
     
<range-partitioning-scheme> ::=
   RANGE ( <partition-key> ) ( <range-partition-decl> [,<range-partition-decl>  ] )

<partition-key> ::= <column-name>

<range-partition-declaration> ::=
    <range-partition-name> VALUES <= ( {<constant> |  MAX } ) [ IN <dbspace-name> ]

<hash-partitioning-scheme> ::=
   HASH ( <partition-key> [ , <partition-key>,  ] )

<composite-partitioning-scheme> ::=
   <hash-partitioning-scheme> SUBPARTITION BY <range-partitioning-scheme>
Copy

サンプルソースパターン

入力コード:

 -- Range Partitioning
CREATE TABLE sales (
    sale_id INT,
    sale_date DATE,
    amount DECIMAL(10, 2)
)
PARTITION BY RANGE (sale_date) (
    PARTITION p1 VALUES <= ('2023-01-01'),
    PARTITION p2 VALUES <= ('2024-01-01'),
    PARTITION p3 VALUES < MAXVALUE
);

-- Hash Partitioning
CREATE TABLE customers (
    customer_id INT,
    customer_name VARCHAR(255)
)
PARTITION BY HASH (customer_id) (
    PARTITION p1,
    PARTITION p2,
    PARTITION p3,
    PARTITION p4
);

-- Composite Partitioning (Hash-Range)
CREATE TABLE orders (
    order_id INT,
    customer_id INT,
    order_date DATE,
    amount DECIMAL(10,2)
)
PARTITION BY HASH (customer_id)
    SUBPARTITION BY RANGE (order_date) (
        PARTITION p1 VALUES <= ('2023-01-01'),
        PARTITION p2 VALUES <= ('2024-01-01'),
        PARTITION p3 VALUES < MAXVALUE
    );
Copy
出力コード:
 -- Range Partitioning
CREATE TABLE sales (
    sale_id INT,
    sale_date DATE,
    amount DECIMAL(10, 2)
)
;

-- Hash Partitioning
CREATE TABLE customers (
    customer_id INT,
    customer_name VARCHAR(255)
);

-- Composite Partitioning (Hash-Range)
CREATE TABLE orders (
    order_id INT,
    customer_id INT,
    order_date DATE,
    amount DECIMAL(10,2)
);
Copy

TEMPORARY TABLES

説明

Sybaseでは、 IQ GLOBAL | LOCAL TEMPORARY は、セッションの間だけ存在する仮テーブルを作成するために使用されます。これらのテーブルはセッション固有のもので、セッションが終了すると自動的に削除されます。これらは、恒久的なデータベーススキーマに影響を与えることなく、中間結果や作業データを保存するのに役立ちます。また、名前の先頭に # を付けることによってのみ作成できます。

警告

この構文はSnowflakeで部分的にサポートされています。

文法構文

 CREATE [ { GLOBAL | LOCAL } TEMPORARY ] TABLE 
Copy

サンプルソースパターン

入力コード:

 CREATE LOCAL TEMPORARY TABLE TABLE01 (
    col1 INTEGER
);

CREATE GLOBAL TEMPORARY TABLE TABLE02 (
    col1 INTEGER
);

CREATE TABLE #TABLE03(
    col1 INTEGER
);
Copy
出力コード:
 CREATE OR REPLACE TEMPORARY TABLE TABLE01 (
    col1 INTEGER
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "sybase",  "convertedOn": "03/19/2025",  "domain": "test" }}'
;

--** SSC-FDM-0009 - GLOBAL TEMPORARY TABLE FUNCTIONALITY NOT SUPPORTED. **
CREATE OR REPLACE TABLE TABLE02 (
    col1 INTEGER
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "sybase",  "convertedOn": "03/19/2025",  "domain": "test" }}'
;

CREATE OR REPLACE TEMPORARY TABLE T_TABLE03 (
    col1 INTEGER
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "sybase",  "convertedOn": "03/19/2025",  "domain": "test" }}'
;
Copy

関連 EWIs

SSC-FDM-0009: GLOBAL TEMPORARY TABLE 関数はサポートされていません。