
Синтаксис
ALTER DOMAIN name {
[SET DEFAULT {literal | NULL | USER}]
| [DROP DEFAULT]
| [ADD [CONSTRAINT] CHECK (<dom_search_condition>)]
| [DROP CONSTRAINT]
};
<dom_search_condition> = {
VALUE <operator> <val>
| VALUE [NOT] BETWEEN <val> AND <val>
| VALUE [NOT] LIKE <val> [ESCAPE <val>]
| VALUE [NOT] IN (<val> [, <val> ...])
| VALUE IS [NOT] NULL
| VALUE [NOT] CONTAINING <val>
| VALUE [NOT] STARTING [WITH] <val>
| (<dom_search_condition>)
| NOT <dom_search_condition>
| <dom_search_condition> OR <dom_search_condition>
| <dom_search_condition> AND <dom_search_condition>
}
<operator> = {= | < | > | <= | >= | !< | !> | <> | !=}
Примеры
Следующая инструкция создает домен с допустимыми значениями > 1000, за тем устанавливает его значение по умолчанию к 9999.
CREATE DOMAIN CUSTNO
AS INTEGER
CHECK (VALUE > 1000);
ALTER DOMAIN CUSTNO SET DEFAULT 9999;
ALTER TABLE
Синтаксис
ALTER TABLE table <operation> [, <operation> ...];
<operation> = {ADD <col_def> | ADD <table_constraint> | DROP col
| DROP CONSTRAINT constraint}
<col_def> = col {<datatype> | [COMPUTED [BY] (<expr>) | domain}
[DEFAULT {literal | NULL | USER}]
[NOT NULL] [<col_constraint>]
[COLLATE collation]
<col_constraint> = [CONSTRAINT constraint] <constraint_def>
[<col_constraint>]
<constraint_def> = {PRIMARY KEY | UNIQUE
| CHECK (<search_condition>)
| REFERENCES other_table [(other_col [, other_col ...])]}
<datatype> = {
{SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION} [<array_dim>]
| {DECIMAL | NUMERIC} [(precision [, scale])] [<array_dim>]
| DATE [<array_dim>]
| {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR}
[(1...32767)] [<array_dim>] [CHARACTER SET charname]
| {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}
[VARYING] [(1...32767)] [<array_dim>]
| BLOB [SUB_TYPE {int | subtype_name}] [SEGMENT SIZE int]
[CHARACTER SET charname]
| BLOB [(seglen [, subtype])]
}
<array_dim> = [x:y [, x:y ...]]
<table_constraint> = CONSTRAINT constraint <tconstraint_opt>
[<table_constraint>]
<tconstraint_opt> = {
{PRIMARY KEY | UNIQUE} (col [, col ...])
| FOREIGN KEY (col [, col ...]) REFERENCES other_table
| CHECK (<search_condition>)
}
Примеры
Следующий пример добавляет столбец в таблицу и удаляет столбец:
ALTER TABLE COUNTRY
ADD CAPITAL VARCHAR(25),
DROP CURRENCY;
Обратите внимание: Эта инструкция приводит к потере любых данных в удаленном столбце.
Следующая инструкция добавляет два столбца в таблицу и определяет UNIQUE ограничение на одном из них:
ALTER TABLE COUNTRY
ADD CAPITAL VARCHAR(25) UNIQUE,
ADD LARGEST_CITY VARCHAR(25) NOT NULL;
ALTER TRIGGER
Синтаксис
ALTER TRIGGER name
[ACTIVE | INACTIVE]
[{BEFORE | AFTER} {DELETE | INSERT | UPDATE}]
[POSITION number]
[AS <trigger_body>] [terminator]
Примеры
Cледующая инструкция изменяет триггер SET_CUST_NO, делая его не активным. (а пассивным :))
ALTER TRIGGER SET_CUST_NO INACTIVE;
Следующая инструкция изменяет триггер SET_CUST_NO, чтобы вставлять строку в таблицу NEW_CUSTOMER для каждого нового заказчика:
SET TERM !! ;
ALTER TRIGGER SET_CUST_NO FOR CUSTOMER
BEFORE INSERT AS
BEGIN
NEW.CUST_NO = GEN_ID(CUST_NO_GEN, 1);
INSERT INTO NEW_CUSTOMERS(NEW.CUST_NO, TODAY)
END !!
SET TERM ; !!
ALTER PROCEDURE