ALTER TABLE

Материал из Фабиус wiki
Перейти к: навигация, поиск

Advantage SQL Engine

This is the first topic  This is the last topic  Feedback on: Advantage Database Server - ALTER TABLE Advantage SQL Engine master_Alter_table Advantage Web Development > Django > Advantage Django Backend / Dear Support Staff, Mail us feedback on this topic!    

ALTER TABLE

Advantage SQL Engine

This is the first topic  This is the last topic  Mail us feedback on this topic!    

Modifies the structure of a table and adds or deletes column constraints

Syntax

ALTER TABLE <table-name><action>[<action>…]

action ::= ADD [COLUMN] <column-info> [<position-info>] |

ALTER [COLUMN] <original-column-identifier> <column-info> [<position-info>] |

ALTER [COLUMN] <column-identifier> DROP <drop-column-constraint> |

DROP [COLUMN] <column-identifier> |

DROP <drop-table-constraint>

column-identifier ::= A user defined column name.

original-column-identifier ::= The existing (or original) user-defined column name.

column-info ::= <column-identifier> <data-type> [<vfp-option>…] [<column-constraints>… ]

data-type ::= type-name | type-name (integer) | type-name (integer, integer)

type-name ::= A supported data type (see the next section Supported Data Types).

position-info ::= [ POSITION integer ] A 1 based index of the column’s position in the table after the restructure.

column constraints ::=

[CONSTRAINT NOT NULL] |

[CONSTRAINT MINIMUM <max-column-value>] |

[CONSTRAINT MAXIMUM <min-column-value>] |

[CONSTRAINT ERROR MESSAGE <error-message>] |

[DEFAULT <default-column-value>]

vfp-option ::=

NULL | NOT NULL | NOCPTRANS

These options apply to Visual FoxPro tables (ADS_VFP) and can be used with free tables and data dictionary tables. The NULL (and NOT NULL) option indicate whether the column will be able to physically hold a NULL value. This is different from a NOT NULL constraint. If a Visual FoxPro column is created without the NULL option, then an error will be generated if an attempt is made to store a NULL in that column. The NOCPTRANS option applies to Visual FoxPro character and memo field types. If this option is provided, the data will not be translated across codepages (ANSI/OEM conversions).


drop-column-constraint::= NOT NULL | MINIMUM | MAXIMUM | ERROR MESSAGE | DEFAULT

drop-table-constraint ::= [CONSTRAINT] PRIMARY KEY

error-message ::= A string literal to be returned as the error message when the column constraints are violated.

max-column-value ::= A string literal (i.e., surrounded by single quotes) containing an Advantage expression. The evaluated expression result must be of the same type as the column type. The result will be used as the maximum value for the column. (For more information about expressions, see Advantage Expression Engine.)

min-column-value ::= A string literal (i.e., surrounded by single quotes) containing an Advantage expression. The evaluated expression result must be of the same type as the column type. The result will be used as the minimum value for the column. (For more information about expressions, see Advantage Expression Engine.)

default-column-value::= A string literal (i.e., surrounded by single quotes) containing an Advantage expression. The evaluated expression result must be of the same type as the column type. The result will be used as default value for the column when new records are added or the ADS_DD_RI_SETDEFAULT rule is used in referential integrity. (For more information about expressions, see Advantage Expression Engine.)

Remarks

If the table is a database table, that is, if the table is associated with an Advantage Data Dictionary, the table can only be altered by users with ALTER permissions for that specific table. If the table is free table, the table can only be altered on a free connection.

If dropping a primary key table-constraint, the primary key setting for the associated index will be set to False. The index will still remain, however. Should the index need to be removed, use the DROP INDEX statement.

Note When restructuring a table and changing an integer field to an auto increment (autoinc) field type, Advantage does not verify the uniqueness of the existing integer values. It preserves the existing values and sets the next auto increment value (for the next appended record) to be the maximum existing integer value plus one. You can test the uniqueness of integer field values prior to changing the structure of the table by building a unique index on the field.

Example

ALTER TABLE salesreps ADD COLUMN region char(40)

ALTER TABLE customers ADD address3 char(40) ADD COLUMN refund integer

ALTER TABLE orders ALTER COLUMN price price curdouble

ALTER TABLE offices ALTER COLUMN mgr mgr integer DEFAULT '104'

ALTER TABLE salesreps ALTER name name char(40) CONSTRAINT NOT NULL

ALTER TABLE demo10

ADD COLUMN test char(20)

DEFAULT ‘abcde’
CONSTRAINT MINIMUM ‘A’
CONSTRAINT MAXIMUM ‘z’
CONSTRAINT NOT NULL

CONSTRAINT error message ‘A bad value was input for the column named test’

ADD COLUMN test2 SHORT

DEFAULT ‘45’
CONSTRAINT MINIMUM ‘2’
CONSTRAINT MAXIMUM ‘169’
CONSTRAINT NOT NULL
CONSTRAINT error message ‘An invalid values was set in the column named test2’

ALTER COLUMN lastname lastnamechanged char(40)

DEFAULT ‘Donahue’
CONSTRAINT MINIMUM ‘A’
CONSTRAINT MAXIMUM ‘Z’
CONSTRAINT error message ‘An invalid lastnamechanged was input’

ALTER COLUMN firstname firstnamechanged char(30)

DROP deptnum

DROP dateofhire

ALTER table demo10

ALTER COLUMN lastnamechanged DROP DEFAULT

ALTER COLUMN lastnamechanged DROP MINIMUM

ALTER COLUMN lastnamechanged DROP MAXIMUM

ALTER COLUMN lastnamechanged DROP error message

ALTER COLUMN lastnamechanged DROP NOT NULL

ALTER TABLE table1 DROP CONSTRAINT PRIMAY KEY

ALTER TABLE table1 DROP PRIMARY KEY