ALTER TABLE(表定義変更)
機能
表定義変更には,次に示す機能があります。
使用権限
形式
次の形式中の項番は,オペランドの番号と対応しています。
項番 | 形 式 |
---|---|
1 | ALTER TABLE 〔認可識別子.〕表識別子 表定義変更動作 |
表定義変更動作::={ 列追加定義 |
項番 | 形 式 |
---|---|
2 | 列追加定義::= |
列回復制約1::=RECOVERY〔{ALL|PARTIAL|NO}〕 | |
LOB列格納用RDエリア指定::= | |
マトリクス分割LOB列格納用RDエリア指定::=2次元格納用RDエリア指定 | |
抽象データ型定義内LOB格納用RDエリア指定::= | |
DEFAULT句::=DEFAULT 〔既定値〕 | |
更新可能列属性::=UPDATE 〔ONLY FROM NULL〕 | |
3 | RDエリア追加定義::= |
LOB列格納用RDエリア指定::= | |
抽象データ型定義内LOB格納用RDエリア指定::= | |
インデクス格納用RDエリア指定::= | |
4 | 列属性変更定義::= |
列回復制約2::= RECOVERY{ALL|PARTIAL|NO} | |
5 | 列削除定義::= |
6 | 表名変更定義::= |
7 | 列名変更定義::= |
8 | 分割格納条件変更定義::= |
8-1 | 横分割表変更指定::= |
8-2 | 変更前境界値リスト::=境界値リスト |
8-3 | 変更後境界値分割指定::={表格納用RDエリア名 |
8-4 | 変更前RDエリア情報リスト::= |
8-5 | 変更後格納条件分割指定::={表格納用RDエリア名 |
8-6 | インデクス格納用RDエリア変更指定::= |
8-7 | 主キー格納用RDエリア変更指定::= |
8-8 | クラスタキー格納用RDエリア変更指定::= |
8-9 | LOB列格納用RDエリア変更指定::= |
8-10 | LOB列格納用RDエリア変更リスト::= |
8-11 | マトリクス分割表格納用RDエリア変更指定::=2次元格納用RDエリア指定 |
オペランド
更新前の列の値 | 更新後の列の値 | 更新可否 |
---|---|---|
ナル値 | ナル値 | ○ |
ナル値 | 非ナル値 | ○ |
非ナル値 | ナル値 | × |
非ナル値 | 非ナル値※ | × |
表種別 | UPDATE指定 | UPDATE ONLY FROM NULL指定 | 左記の 指定なし | |||
---|---|---|---|---|---|---|
指定 可否 | 列の値の更新可否 | 指定 可否 | 列の値の更新可否 | 指定 可否 | 列の値の更新可否 | |
非改竄防止表 | ○ | ○ | ○ | ○ | - | ○ |
改竄防止表 | ○ | ○ | ○ | ○※ | - | × |
表3-6 インデクス種別によるインデクス格納用RDエリアの指定可否
インデクスの定義方法 | インデクスの分割方法 | インデクス格納用RDエリアの指定要否 | |
---|---|---|---|
CREATE INDEX 形式1,又は形式3で定義したインデクス,及び主キー | 1サーバ内だけの横分割※1 | サーバ内分割キーインデクス | ○ |
サーバ内非分割キーインデクス | |||
サーバ間だけの横分割※2 | サーバ内分割キーインデクス | ||
サーバ内非分割キーインデクス | ×※5※6 | ||
サーバ内,かつサーバ間の横分割※3 | サーバ内分割キーインデクス | ○ | |
サーバ内非分割キーインデクス | |||
非分割※4 | 非分割キーインデクス | ×※5 | |
CREATE INDEX 形式2で定義したインデクス,及びクラスタキー | 1サーバ内だけの横分割※1 | ○ | |
サーバ間だけの横分割※2 | |||
サーバ内,かつサーバ間の横分割※3 |
更新前の列の値 | 更新後の列の値 | 更新可否 |
---|---|---|
ナル値 | ナル値 | ○ |
ナル値 | 非ナル値 | ○ |
非ナル値 | ナル値 | × |
非ナル値 | 非ナル値※ | × |
表種別 | UPDATE指定 | UPDATE ONLY FROM NULL指定 | 左記の 指定なし | |||
---|---|---|---|---|---|---|
指定 可否 | 列の値の更新可否 | 指定 可否 | 列の値の更新可否 | 指定 可否 | 列の値の更新可否 | |
非改竄防止表 | ○ | ○ | ○ | ○ | - | ○ |
改竄防止表 | × | ○ | × | ○※ | - | × |
表種別 | 表の分割方法 | 実行種別 | ||
---|---|---|---|---|
分割 | 統合 | |||
横分割表 | キーレンジ分割 | 境界値指定 | 任意の1個の境界値を2~16個に分割します。 | 任意の2~16個の境界値を1個に統合します。 |
格納条件指定 | 任意の1個のRDエリアを2~16個に分割します。 | 任意の2~16個のRDエリアを1個に統合します。 | ||
マトリクス分割表 | キーレンジ分割 | 境界値指定 | 一つの次元の1個の境界値を2~16個に分割します。結果として,n個の境界値を2n~16n個の境界値に分割します。 | 一つの次元の2~16個の境界値を1個に統合します。結果として,2n~16n個の境界値をn個の境界値に統合します。 |
表種別 | 分割方法 | 変更の可否 | ||
---|---|---|---|---|
横分割表 | キーレンジ分割 | 格納条件指定 | 格納条件の比較演算子に=だけを用いた表 | ○ |
格納条件の比較演算子に=以外を用いた表 | × | |||
境界値指定 | ○ | |||
ハッシュ分割 | × | |||
マトリクス分割表 | 第1次元:境界値指定 第2次元:境界値指定 | ○ | ||
第1次元:境界値指定 第2次元:ハッシュ分割 | ○※2 | |||
非分割表※1 | - | × |
表3-7 システム定義のpd_check_pendingオペランドにUSEを指定している場合に,検査保留状態を解除するディクショナリ表
変更対象表に定義されている制約 | 表情報に検査保留状態が設定されたRDエリアの有無※ | 検査保留状態を解除するディクショナリ表 | |
---|---|---|---|
参照制約 | なし | SQL_REFERENTIAL_CONSTRAINTS表 | CHECK_PEND列 |
SQL_TABLES表 | CHECK_PEND列 | ||
検査制約 | なし | SQL_CHECKS表 | CHECK_PEND2列 |
SQL_TABLES表 | CHECK_PEND2列 | ||
参照制約及び検査制約 | 参照制約:なし 検査制約:なし | SQL_REFERENTIAL_CONSTRAINTS表 | CHECK_PEND列 |
SQL_CHECKS表 | CHECK_PEND2列 | ||
SQL_TABLES表 | CHECK_PEND列,CHECK_PEND2列 | ||
参照制約:なし 検査制約:あり | SQL_REFERENTIAL_CONSTRAINTS表 | CHECK_PEND列 | |
SQL_TABLES表 | CHECK_PEND列 | ||
参照制約:あり 検査制約:なし | SQL_CHECKS表 | CHECK_PEND2列 | |
SQL_TABLES表 | CHECK_PEND2列 | ||
制約が定義されていない | なし | - | - |
項目 | 境界値指定の横分割表 | |
---|---|---|
ALTER TABLEに指定する変更後のRDエリア※ | 重複 | 重複してもかまいません。 |
連続 | 連続しないようにしてください。 | |
分割格納条件を変更した結果の表全体のRDエリア | 重複 | 重複してもかまいません。 |
連続 | 分割時は,連続したRDエリアをシステムが一つにまとめます。 | |
統合時は指定できません。 |
項目 | 境界値指定の横分割表 | |
---|---|---|
ALTER TABLEに指定する変更後のRDエリア※ | 重複 | 重複してもかまいません。 |
連続 | 連続してもかまいません。 | |
分割格納条件を変更した結果の表全体のRDエリア | 重複 | 重複してもかまいません。 |
連続 | 連続したRDエリアをシステムは一つにまとめません。 |
共通規則
留意事項
使用例
ALTER TABLE ZAIKO
ADD SADRS VARCHAR(40)
ALTER TABLE ZAIKO
ADD SADRS VARCHAR(40)
NOT NULL WITH DEFAULT
ALTER TABLE ZAIKO
CHANGE SADRS VARCHAR(60)
ALTER TABLE ZAIKO
CHANGE CLUSTER KEY UNIQUE
ALTER TABLE ZAIKO
DROP SADRS
ALTER TABLE ZAIKO
DROP SADRS WITH PROGRAM
ALTER TABLE ZAIKO
ADD SMAP BLOB(1M) IN (RMAPLOB1)
ALTER TABLE NZAIKO
ADD RDAREA RDA3
FOR COLUMN SMAP IN (RMAPLOB3)
FOR INDEX ISCODE IN (RDA4)
CREATE FIX TABLE "T1"("C1" INT,"C2" INT) PARTITIONED BY "C1"
IN(("TA1")100,("TA2")200,("TA3")400,("TA4")500,("TA5")600,("TA6"))
CREATE INDEX "I1" ON "T1"("C1")
IN(("IA1"),("IA2"),("IA3"),("IA4"),("IA5"),("IA6"))
ALTER TABLE "T1" CHANGE RDAREA
((100),(200)) INTO "TA11"
FOR INDEX "I1" INTO "IA11"
ALTER TABLE "T1" CHANGE RDAREA
((400)) INTO (("TA12")300,("TA13"))
FOR INDEX "I1" INTO (("IA12"),("IA13"))
ALTER TABLE "T1" CHANGE RDAREA
((600),(MAX)) INTO "TA11"
FOR INDEX "I1" INTO "IA11"
CREATE FIX TABLE "T1"("C1" INT,"C2" INT) PARTITIONED BY "C1"
IN(("TA1")100,("TA2")200,("TA3")400,("TA4")500,("TA5")600,("TA6"))
CREATE INDEX "I1" ON "T1"("C1")
IN(("IA1"),("IA2"),("IA3"),("IA4"),("IA5"),("IA6"))
ALTER TABLE "T1" CHANGE RDAREA
((400)) INTO (("TA3")300,("TA4"))
FOR INDEX "I1" INTO (("IA3"),("IA4"))
CREATE FIX TABLE "T1"("C1" CHAR(3),"C2" INT)
IN(("TA1")"C1"='001',("TA2")"C1"='002',
("TA3")"C1"='003',("TA4")"C1"=('004','005'),("TA5"))
CREATE INDEX "I1" ON "T1"("C1")
IN(("IA1"),("IA2"),("IA3"),("IA4"),("IA5"))
ALTER TABLE "T1" CHANGE RDAREA PARTITIONED CONDITION
(("TA5")) INTO (("TA6")"C1"='006',("TA5"))
FOR INDEX "I1" INTO (("IA6"),("IA5"))
ALTER TABLE "T1" CHANGE RDAREA PARTITIONED CONDITION
(("TA1"),("TA5")) INTO "TA5"
FOR INDEX "I1" INTO "IA5"
ALTER TABLE "T1" CHANGE RDAREA PARTITIONED CONDITION
(("TA4")) INTO (("TA4")"C1"='004',("TA7")"C1"='005')
FOR INDEX "I1" INTO (("IA4"),("IA7"))
ALTER TABLE "T1" CHANGE RDAREA PARTITIONED CONDITION
(("TA1"),("TA2")) INTO "TA2"
FOR INDEX "I1" INTO "IA2"
CREATE FIX TABLE "USERA"."ZAIKO"
("GNO" CHAR(5),"GNAME" CHAR(8),"KIKAKU" CHAR(3),"TANKA" INTEGER,"NYUUKOBI" CHAR(10))
PARTITIONED BY MULTIDIM
("GNO" (('20000')),
"NYUUKOBI" (('2010-12-31'),('2011-12-31')))
IN (("RDAT01","RDAT02","RDAT03"),
("RDAT01","RDAT04","RDAT05"))
CLUSTER KEY ("GNO","NYUUKOBI")
IN (("RDAI01","RDAI02","RDAI03"),
("RDAI01","RDAI04","RDAI05"))
ALTER TABLE "USERA"."ZAIKO" CHANGE RDAREA
MULTIDIM ("GNO" ((MAX))) AT (('60000'),(MAX))
INTO (("RDAT01","RDAT04","RDAT05"),
("RDAT11","RDAT14","RDAT15"))
FOR CLUSTER KEY
INTO (("RDAI01","RDAI04","RDAI05"),
("RDAI11","RDAI14","RDAI15"))
ALTER TABLE "USERA"."ZAIKO" CHANGE RDAREA
MULTIDIM ("GNO" (('60000'),(MAX))) AT ((MAX))
INTO (("RDAT01","RDAT04","RDAT05"))
FOR CLUSTER KEY
INTO (("RDAI01","RDAI04","RDAI05"))
ALTER TABLE "USERA"."ZAIKO" CHANGE RDAREA
MULTIDIM ("NYUUKOBI" ((MAX))) AT (('2012-12-31'),(MAX))
INTO (("RDAT03","RDAT13"),
("RDAT05","RDAT15"))
FOR CLUSTER KEY
INTO (("RDAI03","RDAI13"),
("RDAI05","RDAI15"))
ALTER TABLE "USERA"."ZAIKO" CHANGE RDAREA
MULTIDIM ("NYUUKOBI" (('2012-12-31'),(MAX))) AT ((MAX))
INTO (("RDAT03"),
("RDAT05"))
FOR CLUSTER KEY
INTO (("RDAI03"),
("RDAI05"))
CREATE TABLE JUTYU
(DNO CHAR(6),TCODE CHAR(5),SCODE CHAR(4),
BIKOU CHAR(60) UPDATE,
JSURYO INTEGER,JDATE DATE,JTIME TIME,
JINSERTDATE DATE NOT NULL WITH DEFAULT SYSTEM GENERATED)
ALTER TABLE JUTYU
CHANGE INSERT ONLY WHILE 10 YEARS BY JINSERTDATE