SQL> SET CHARACTER LENGTH 'CHARACTERS'; SQL> SHOW TABLE (COLUMNS) COLOURS; Information for table COLOURS Columns for table COLOURS: Column Name Data Type Domain ----------- --------- ------ ENGLISH CHAR(8) MCS_DOM DEC_MCS 8 Characters, 8 Octets FRENCH CHAR(8) MCS_DOM DEC_MCS 8 Characters, 8 Octets JAPANESE CHAR(4) KANJI_DOM KANJI 4 Characters, 8 Octets ROMAJI CHAR(8) DEC_KANJI_DOM KATAKANA CHAR(8) KATAKANA_DOM KATAKANA 8 Characters, 8 Octets HINDI CHAR(8) HINDI_DOM DEVANAGARI 8 Characters, 8 Octets GREEK CHAR(8) GREEK_DOM ISOLATINGREEK 8 Characters, 8 Octets ARABIC CHAR(8) ARABIC_DOM ISOLATINARABIC 8 Characters, 8 Octets RUSSIAN CHAR(8) RUSSIAN_DOM ISOLATINCYRILLIC 8 Characters, 8 Octets SQL> ALTER TABLE COLOURS ALTER ROMAJI NCHAR(8); SQL> SHOW TABLE (COLUMNS) COLOURS; Information for table COLOURS Columns for table COLOURS: Column Name Data Type Domain ----------- --------- ------ ENGLISH CHAR(8) MCS_DOM DEC_MCS 8 Characters, 8 Octets FRENCH CHAR(8) MCS_DOM DEC_MCS 8 Characters, 8 Octets JAPANESE CHAR(4) KANJI_DOM KANJI 4 Characters, 8 Octets ROMAJI CHAR(8) KANJI 8 Characters, 16 Octets KATAKANA CHAR(8) KATAKANA_DOM KATAKANA 8 Characters, 8 Octets HINDI CHAR(8) HINDI_DOM DEVANAGARI 8 Characters, 8 Octets GREEK CHAR(8) GREEK_DOM ISOLATINGREEK 8 Characters, 8 Octets ARABIC CHAR(8) ARABIC_DOM ISOLATINARABIC 8 Characters, 8 Octets RUSSIAN CHAR(8) RUSSIAN_DOM ISOLATINCYRILLIC 8 Characters, 8 Octets SQL> |
例7: 表COLOURSにデータが含まれている場合に表示されるエラー
次の例では、列ROMAJIはDEC_KANJIキャラクタ・セットを使用して定義されています。列のキャラクタ・セットを変更する前に列ROMAJIにデータが含まれている場合は、表の変更後にデータ検索を試行するとSQLによって次のエラーが表示されます。
SQL> SELECT ROMAJI FROM COLOURS; %RDB-F-CONVERT_ERROR, invalid or unsupported data conversion -RDMS-E-CSETBADASSIGN, incompatible character sets prohibits the requested assignment SQL> -- SQL> -- To recover, use the ROLLBACK statement or return the column to its SQL> -- original character set. SQL> -- SQL> ROLLBACK; SQL> SELECT ROMAJI FROM COLOURS; ROMAJI kuro shiro ao aka ki midori 6 rows selected SQL> |
例8: POSITION句の使用
SQL> SHOW TABLE (COL) EMPLOYEES Information for table EMPLOYEES Columns for table EMPLOYEES: Column Name Data Type Domain ----------- --------- ------ EMPLOYEE_ID CHAR(5) ID_NUMBER Missing Value: LAST_NAME CHAR(14) LAST_NAME FIRST_NAME CHAR(10) FIRST_NAME MIDDLE_INITIAL CHAR(1) MIDDLE_INITIAL Missing Value: ADDRESS_DATA_1 CHAR(25) ADDRESS_DATA_1 Missing Value: ADDRESS_DATA_2 CHAR(25) ADDRESS_DATA_2 Missing Value: CITY CHAR(20) CITY Missing Value: STATE CHAR(2) STATE Missing Value: POSTAL_CODE CHAR(5) POSTAL_CODE Missing Value: SEX CHAR(1) SEX Missing Value: ? BIRTHDAY DATE VMS STANDARD_DATE Missing Value: 17-NOV-1858 00:00:00.00 STATUS_CODE CHAR(1) STATUS_CODE Missing Value: N SQL> -- Alter the table to rearrange the order in which columns SQL> -- are displayed. SQL> ALTER TABLE EMPLOYEES cont> ALTER COLUMN SEX BEFORE COLUMN LAST_NAME cont> ALTER COLUMN BIRTHDAY BEFORE COLUMN LAST_NAME cont> ALTER COLUMN STATUS_CODE BEFORE COLUMN LAST_NAME; SQL> COMMIT; SQL> -- Show the table to demonstrate that the order in which SQL> -- columns are displayed has changed. SQL> SHOW TABLE (COL) EMPLOYEES; Information for table EMPLOYEES Columns for table EMPLOYEES: Column Name Data Type Domain ----------- --------- ------ EMPLOYEE_ID CHAR(5) ID_NUMBER Missing Value: SEX CHAR(1) SEX Missing Value: ? BIRTHDAY DATE VMS STANDARD_DATE Missing Value: 17-NOV-1858 00:00:00.00 STATUS_CODE CHAR(1) STATUS_CODE Missing Value: N LAST_NAME CHAR(14) LAST_NAME FIRST_NAME CHAR(10) FIRST_NAME MIDDLE_INITIAL CHAR(1) MIDDLE_INITIAL Missing Value: ADDRESS_DATA_1 CHAR(25) ADDRESS_DATA_1 Missing Value: ADDRESS_DATA_2 CHAR(25) ADDRESS_DATA_2 Missing Value: CITY CHAR(20) CITY Missing Value: STATE CHAR(2) STATE Missing Value: POSTAL_CODE CHAR(5) POSTAL_CODE Missing Value: |
例9: トリガーの無効化
SQL> SELECT * FROM JOB_HISTORY WHERE EMPLOYEE_ID='00164'; EMPLOYEE_ID JOB_CODE JOB_START JOB_END DEPARTMENT_CODE SUPERVISOR_ID 00164 DMGR 21-Sep-1981 NULL MBMN 00228 00164 SPGM 5-Jul-1980 20-Sep-1981 MCBM 00164 2 rows selected SQL> DELETE FROM EMPLOYEES WHERE EMPLOYEE_ID ='00164'; 1 row deleted SQL> -- Show that the EMPLOYEE_ID_CASCADE_DELETE trigger caused SQL> -- records in the JOB_HISTORY table to be deleted for the SQL> -- employee with EMPLOYEE_ID of 00164. SQL> SELECT * FROM JOB_HISTORY WHERE EMPLOYEE_ID='00164'; 0 rows selected SQL> -- Roll back the delete operation and alter the EMPLOYEES table SQL> -- to disable the EMPLOYEE_ID_CASCADE_DELETE trigger. SQL> ROLLBACK; SQL> ALTER TABLE EMPLOYEES cont> DISABLE TRIGGER EMPLOYEE_ID_CASCADE_DELETE; SQL> -- Commit the alter operation and disconnect to ensure that SQL> -- the next connection will have the trigger disabled. SQL> COMMIT; SQL> DISCONNECT DEFAULT; SQL> ATTACH 'FILENAME MF_PERSONNEL.RDB'; SQL> DELETE FROM EMPLOYEES WHERE EMPLOYEE_ID ='00164'; 1 row deleted SQL> -- Show that with the trigger disabled, a deletion of SQL> -- employee 00164 from the EMPLOYEES table does not SQL> -- trigger a deletion for that employee from the SQL> -- JOB_HISTORY table. SQL> SELECT * FROM JOB_HISTORY WHERE EMPLOYEE_ID='00164'; EMPLOYEE_ID JOB_CODE JOB_START JOB_END DEPARTMENT_CODE SUPERVISOR_ID 00164 DMGR 21-Sep-1981 NULL MBMN 00228 00164 SPGM 5-Jul-1980 20-Sep-1981 MCBM 00164 2 rows selected |
例10: NOT NULL制約の削除
次の例では、ALTER TABLEによるNOT NULL制約の削除を示します。
SQL> create table MY_TABLE (a integer not null); SQL> SQL> show table (constraint) MY_TABLE Information for table MY_TABLE Table constraints for MY_TABLE: MY_TABLE_A_NOT_NULL Not Null constraint Column constraint for MY_TABLE.A Evaluated on UPDATE, NOT DEFERRABLE Source: MY_TABLE.A NOT null Constraints referencing table MY_TABLE: No constraints found SQL> SQL> alter table MY_TABLE cont> alter column A NULL; SQL> SQL> show table (constraint) MY_TABLE Information for table MY_TABLE Table constraints for MY_TABLE: No constraints found Constraints referencing table MY_TABLE: No constraints found SQL> |
例11: 既存の表へのIDENTITY列の追加
SQL> alter table EMPLOYEES cont> add column SEQUENCE_ID integer identity (1000, 10) cont> comment is 'Add unique sequence number for every employee'; SQL> SQL> show table (column) EMPLOYEES Information for table EMPLOYEES Columns for table EMPLOYEES: Column Name Data Type Domain ----------- --------- ------ EMPLOYEE_ID CHAR(5) ID_NUMBER . . . SEQUENCE_ID INTEGER Computed: IDENTITY Comment: Add unique sequence number for every employee SQL> select EMPLOYEE_ID, SEQUENCE_ID from employees; EMPLOYEE_ID SEQUENCE_ID 00164 1000 00165 1010 . . . 00418 1970 00435 1980 00471 1990 100 rows selected SQL> SQL> show sequence EMPLOYEES EMPLOYEES Sequence Id: 2 Initial Value: 1000 Minimum Value: 1000 Maximum Value: (none) Next Sequence Value: 2000 Increment by: 10 Cache Size: 20 No Order No Cycle No Randomize Wait Comment: column IDENTITY sequence SQL> |
例12: COMPUTED BY列の変更
SQL> create table ttt (a integer, c computed by CURRENT_USER); SQL> insert into ttt (a) values (10); 1 row inserted SQL> select * from ttt; A C 10 SMITH 1 row selected SQL> SQL> show table (column) ttt Information for table TTT Columns for table TTT: Column Name Data Type Domain ----------- --------- ------ A INTEGER C CHAR(31) UNSPECIFIED 31 Characters, 31 Octets Computed: by CURRENT_USER SQL> SQL> alter table ttt cont> alter c cont> computed by upper (substring (current_user from 1 for 1)) cont> || lower (substring (current_user from 2)); SQL> SQL> show table (column) ttt Information for table TTT Columns for table TTT: Column Name Data Type Domain ----------- --------- ------ A INTEGER C VARCHAR(31) UNSPECIFIED 31 Characters, 31 Octets Computed: by upper (substring (current_user from 1 for 1)) || lower (substring (current_user from 2)) SQL> SQL> select * from ttt; A C 10 Smith 1 row selected SQL> |
既存のトリガーの有効化と無効化を切り替えたり、名前を変更します。変更されるのは、ALTER TRIGGER文を含むトランザクションがコミットされた後です。
ALTER TRIGGER文は次の環境で使用できます。
- 対話型SQL内
- プリコンパイル対象のホスト言語プログラムに埋め込まれる場合
- SQLモジュールのプロシージャの一部として
- 動的SQLで動的に実行される文として
COMMENT IS 'string'
トリガーに関するコメントを追加します。SQLでは、SHOW文の実行時にコメントのテキストが表示されます。コメントは一重引用符(')で囲み、コメント内の複数の行はスラッシュ(/)で区切ります。DISABLE
有効になっているトリガーを無効にします。ENABLE
無効になっているトリガーを有効にします。RENAME TO
変更するトリガーの名前を変更します。詳細は、「RENAME文」を参照してください。新規名がシノニム名である場合は、エラーが発生します。RENAME TO句には、このデータベースに対して有効なシノニムが必要です。「ALTER DATABASE文」のSYNONYMS ARE ENABLED句に関する説明を参照してください。これらのシノニムがデータベース定義またはアプリケーションによって使用されていない場合は、削除される可能性があります。
trigger-name
既存のトリガーの名前です。
- ユーザーには、トリガー表に対するALTER権限が必要です。
- さらに、ALTER TRIGGER DISABLE文を使用するユーザーには表に対するDROP権限(トリガーが現在有効になっている場合)、ALTER TRIGGER ENABLE文を使用するユーザーには表に対するCREATE権限(トリガーが現在無効になっている場合)も必要です。
- デフォルトでは、トリガーは作成された時点では有効になっています。
- トリガーが無効化されると、INSERT文、UPDATE文またはDELETE文により実行されることはありません。
- すでに無効化された制約が再有効化されると、そのトリガーは新規の問合せに対してのみ有効になります。すでにオープンされている既存のカーソルからは、有効になったトリガーは認識されません。そのため、トリガーを有効化または無効化する場合は、すべての問合せで整合性のある動作が確保されるよう、コミット後に接続を切断して再度アタッチすることをお薦めします。
- SHOW TRIGGERS文を使用すると、トリガーに関する設定(無効化または有効化)を表示できます。
- COMMENT IS句は、COMMENT ON TRIGGER文と同義です。
例1: トリガーの無効化次の例で、EMPLOYEE_ID_CASCADE_DELETEトリガーが有効なときに、EMPLOYEESからレコードを削除することにより、対応するJOB_HISTORY内のレコードが削除されることを示しています。トリガーを無効にすると、それ以降にEMPLOYEESからレコードを削除しても、JOB_HISTORY表からの削除はトリガーされません。
SQL> SELECT * FROM JOB_HISTORY WHERE EMPLOYEE_ID='00164'; EMPLOYEE_ID JOB_CODE JOB_START JOB_END DEPARTMENT_CODE SUPERVISOR_ID 00164 DMGR 21-Sep-1981 NULL MBMN 00228 00164 SPGM 5-Jul-1980 20-Sep-1981 MCBM 00164 2 rows selected SQL> DELETE FROM EMPLOYEES WHERE EMPLOYEE_ID ='00164'; 1 row deleted SQL> SELECT * FROM JOB_HISTORY WHERE EMPLOYEE_ID='00164'; 0 rows selected SQL> ROLLBACK; SQL> ALTER TRIGGER EMPLOYEE_ID_CASCADE_DELETE DISABLE; SQL> COMMIT; SQL> DISCONNECT DEFAULT; . . . SQL> DELETE FROM EMPLOYEES WHERE EMPLOYEE_ID ='00164'; 1 row deleted SQL> SELECT * FROM JOB_HISTORY WHERE EMPLOYEE_ID='00164'; EMPLOYEE_ID JOB_CODE JOB_START JOB_END DEPARTMENT_CODE SUPERVISOR_ID 00164 DMGR 21-Sep-1981 NULL MBMN 00228 00164 SPGM 5-Jul-1980 20-Sep-1981 MCBM 00164 2 rows selected
指定したユーザー名のエントリを変更します。この変更は、ALTER USER文がコミットされた後の、次回のデータベース接続時に反映されます。
ALTER USER文は次の環境で使用できます。
- 対話型SQL内
- プリコンパイル対象のホスト言語プログラムに埋め込まれる場合
- SQLモジュールのプロシージャの一部として
- 動的SQLで動的に実行される文として
ACCOUNT LOCK
ACCOUNT UNLOCK
ACCOUNT LOCK句により、ALTER USER文が適用されているユーザーによるデータベースへのアクセスを無効にします。ACCOUNT UNLOCK句により、ユーザーによるデータベースへのアクセスを許可します。COMMENT IS 'string'
ユーザーに関するコメントを追加します。SQLでは、SHOW USERS文の実行時にコメントのテキストが表示されます。コメントは一重引用符(')で囲み、コメント内の複数の行はスラッシュ(/)で区切ります。IDENTIFIED EXTERNALLY
ユーザーがオペレーティング・システムを介して認証されるよう指定します。NOPROFILE
識別されたユーザーに割り当てられているプロファイルを削除します。現在プロファイルが割り当てられていない場合でもエラーは返されません。PROFILE
ユーザーに割り当てる新規プロファイルを識別し、すでに割り当てられているプロファイルと置き換えます。指定されたプロファイル名は、既存のプロファイル名と一致する必要があります。PUBLIC
データベース内のPUBLICユーザーです。このエントリにより、データベースにアクセスする匿名ユーザーを制御できるようになります。RENAME TO new-username
ユーザー名を変更し、セキュリティ・プロファイルが存在する場合は、既存のユーザー名に関連付けられているそのセキュリティ・プロファイルを新規のユーザー名に割り当てます。これは、たとえばユーザーの個人名が(結婚などで)変わり、それに伴ってオペレーティング・システムでのアカウントが変更された場合などに使用できます。new-usernameには、現在データベースに存在するもの以外にする必要があります。ALTER USERコマンドが発行されると、既存のユーザー名はデータベースから削除され、new-usernameに置き換わります。SECURITY CHECKINGがINTERNALである場合、後続のSHOW PROTECTION文では新規のユーザー名が表示され、GRANT文およびREVOKE文では常に、new-usernameが必要となります。new-usernameは、ALTER USERコマンドを含むトランザクションがコミットされるまで、他のセッションでは表示されません。
詳細は、「RENAME文」を参照してください。
username
データベース内の既存のユーザー名です。
- ユーザーを変更するには、データベースに対するSECURITY権限またはOpenVMSのSECURITY権限が必要です。
- SHOW USERS文を発行することにより、データベースに定義されている既存のユーザーを表示できます。
- RENAME句を発行する場合は、新規のユーザー名がオペレーティング・システムのユーザー名として存在する必要があります。「例」の項を参照してください。
例1: ユーザー名の変更
SQL> create user KELLYN cont> identified externally cont> comment is 'User: Edward "Ned" Kelly'; SQL> SQL> -- The alternate name must exists at the operating system level SQL> alter user KELLYN rename to N_KELLY; %RDB-E-NO_META_UPDATE, metadata update failed -RDMS-E-NOSUCHPRF, unknown profile user or role SQL> SQL> -- Use the new corporate user-id naming scheme SQL> alter user KELLYN cont> rename to NKELLY;
例2: ユーザーへのプロファイルの追加
この例では、DEFAULTトランザクションを定義する新規プロファイルを作成し、ユーザーにプロファイルを割り当てます。ユーザーがデータベースに次回アタッチするときに、START DEFAULT TRANSACTION文では、定義されたプロファイルが標準のデフォルトのREAD ONLYのかわりに使用されます。
SQL> create profile READ_COMMITTED cont> default transaction read write isolation level read committed wait 30; SQL> show profile READ_COMMITTED READ_COMMITTED Default transaction read write wait 30 Isolation level read committed SQL> alter user JAIN profile READ_COMMITTED; SQL> show user JAIN; JAIN Identified externally Account is unlocked Profile: READ_COMMITTED No roles have been granted to this user
この文を使用して、指定したビューを変更できます。
ALTER VIEW文は次の環境で使用できます。
- 対話型SQL内
- ホスト言語プログラムに埋め込まれる場合
- SQLモジュールのプロシージャの一部として
- 動的SQLで動的に実行される文として
AS
ビュー選択式および列の定義を置き換えます。選択リスト内の式の数は、元のCREATE VIEW列リストに一致している必要があります。COMMENT IS
ビューに対して現在定義されているコメント(ある場合)を置き換えます。コメントは、対話型SQLのSHOW VIEW文によって表示されます。CONSTRAINT check-option-name
WITH CHECK OPTION制約の名前を指定します。名前を省略すると、SQLにより名前が作成されます。ただし、Oracle Rdbでは、制約に常に名前を付けることをお薦めします。WITH CHECK OPTION制約に名前を付ける場合、その名前はスキーマで一意である必要があります。WITH CHECK OPTION制約の名前は、INSERT文またはUPDATE文が制約に違反した場合にINTEG_FAILエラー・メッセージによって使用されます。
RENAME TO
現在のビューの名前を変更します。新規のビュー名は、既存のビュー、表、順序またはシノニムに存在しているもの以外にする必要があります。WITH CHECK OPTION
ビューに対する更新操作に制限を課す制約です。チェック・オプション句により、表で挿入または更新された行がビューの定義に準拠していることを確認します。読取り専用のビューにはWITH CHECK OPTION句を指定しないでください。(SQLで読取り専用とみなされるビューは、「使用方法」を参照してください。)WITH NO CHECK OPTION
ビューに対して現在定義されているチェック・オプション制約を削除します。
- 被参照ビューに対するALTER権限が必要です。
- ALTER VIEW文によって、名前付きビュー用のRDB$RELATIONS表のRDB$LAST_ALTERED列がトランザクションのタイムスタンプで更新されます。
- 列名およびその位置はどちらも、ALTER VIEW文では変更できません。またビューに対する列の追加および削除も実行できません。これらを変更するには、DROP VIEW文とCREATE VIEW文の両方を使用して、既存の定義を差し替える必要があります。
- RENAME TO句を使用して、ビューの名前を変更できます。この句を使用するには、データベースでシノニムが有効になっていることが必要です。シノニムを有効にするには、ALTER DATABASE ...SYNONYMS ARE ENABLED文を使用します。
このビューの新規名には、古い名前を使用してシノニムが作成されます。この名前がデータベース定義またはアプリケーションによって使用されなくなった場合は、このシノニムは削除できます。
この句は、RENAME VIEW文と同義です。- COMMENT IS句を使用すると、ビューの既存のコメントを変更できます。この句は、COMMENT ON VIEW文と同義です。
- 列式を変更することにより、その列を読取り専用に変更できるのみでなく、ルーチン、トリガーおよびアプリケーションの参照によってそれらの列に対するINSERT操作およびUPDATE操作が実行されないようにできます。これらの変更は実行時にレポートされます。
同様に、ビュー選択表の式が読取り専用になると、問合せの参照が失敗する場合があります。
次の機能を持つ選択式があるビューは、読取り専用ビューとみなされます。
- DISTINCT引数を使用して結果表から重複行を削除する機能
- FROM句で複数の表またはビューに名前を付ける機能
- FROM句で派生表を使用する機能
- 選択リストに統計関数を含める機能
- UNION句、EXCEPT DISTINCT (MINUS)句、INTERSECT DISTINCT句、GROUP BY句またはHAVING句を含める機能
- AS句により、ビューが読取り専用に変更された場合、または主問合せにLIMIT TO ... ROWS句が含まれた場合、チェック・オプション制約は暗黙的に削除されます。
- ALTER VIEW文では、DATA DEFINITIONモードで予約された表を参照できます。
例1: ビューに関するコメントの変更この例で示すように、ビューに関するコメントは、COMMENT IS句を使用して追加および変更できます。
SQL> show view (comment) current_job Information for table CURRENT_JOB SQL> alter view CURRENT_JOB cont> comment is 'Select the most recent job for the employee'; SQL> show view (comment) current_job Information for table CURRENT_JOB Comment on table CURRENT_JOB: Select the most recent job for the employee SQL>
例2: ビュー定義の列の結果の変更
次のビューでは、派生表および結合を使用して、各部門の従業員数が収集されています。ビューは、部門および会社の責任者が使用する複数のレポート・プログラムで使用されます。
SQL> create view DEPARTMENTS_SUMMARY cont> as cont> select department_code, d.department_name, cont> d.manager_id, jh.employee_count cont> from departments d inner join cont> (select department_code, count (*) cont> from job_history cont> where job_end is null cont> group by department_code) cont> as jh (department_code, employee_count) cont> using (department_code); SQL> SQL> show view DEPARTMENTS_SUMMARY; Information for table DEPARTMENTS_SUMMARY Columns for view DEPARTMENTS_SUMMARY: Column Name Data Type Domain ----------- --------- ------ DEPARTMENT_CODE CHAR(4) DEPARTMENT_NAME CHAR(30) Missing Value: None MANAGER_ID CHAR(5) Missing Value: EMPLOYEE_COUNT INTEGER Source: select department_code, d.department_name, d.manager_id, jh.employee_count from departments d inner join (select department_code, count (*) from job_history where job_end is null group by department_code) as jh (department_code, employee_count) using (department_code) SQL>
データベース管理者が、(問合せを使用して合計数を収集するのではなく)従業員数を保持するための列をDEPARTMENTS表に作成し、トリガーを介してEMPLOYEESおよびJOB_HISTORY(ここでは表示なし)の値を保持するという方法を採用したとします。この場合は、DROP VIEWおよびCREATE VIEWを使用しなくてもビューを簡易化できます。ALTER VIEW文を使用すると、他のビュー、トリガーおよびルーチンからこのビューへの依存性が保持されるため、このような変更の実装に必要な作業は最小限に抑えられます。
SQL> alter table DEPARTMENTS cont> add column EMPLOYEE_COUNT integer; SQL> SQL> alter view DEPARTMENTS_SUMMARY cont> as cont> select department_code, d.department_name, cont> d.manager_id, d.employee_count cont> from departments d; SQL> SQL> show view DEPARTMENTS_SUMMARY; Information for table DEPARTMENTS_SUMMARY Columns for view DEPARTMENTS_SUMMARY: Column Name Data Type Domain ----------- --------- ------ DEPARTMENT_CODE CHAR(4) Missing Value: None DEPARTMENT_NAME CHAR(30) Missing Value: None MANAGER_ID CHAR(5) Missing Value: EMPLOYEE_COUNT INTEGER Source: select department_code, d.department_name, d.manager_id, d.employee_count from departments d SQL>
例3: ビュー定義のWITH CHECK OPTION制約の変更
この例は、WITH CHECK OPTION制約により、挿入されたデータがビューのWHERE句に制限されることを示しています。この制約が削除されると、それ以降INSERTは制約されません。
SQL> create view TOLIVER_EMPLOYEE cont> as select * from EMPLOYEES where employee_id = '00164' cont> with check option; SQL> insert into TOLIVER_EMPLOYEE (employee_id) value ('00000'); %RDB-E-INTEG_FAIL, violation of constraint TOLIVER_EMPLOYEE_CHECKOPT1 caused operation to fail -RDB-F-ON_DB, on database DISK1:[DATABASES]MF_PERSONNEL.RDB;1 SQL> SQL> alter view TOLIVER_EMPLOYEE with no check option; SQL> SQL> insert into TOLIVER_EMPLOYEE (employee_id) value ('00000'); 1 row inserted SQL>