Vincent ROURE wrote:

> To handle customer changes, we often use ADD definitions and DROP
> definitions in ALTER TABLE statement.
> Some times, we reach the 'Row too long' limit (Internal length of a
> table row limit).
> 
> But, when we try to delete some columns (DROP definition) to reduce
> total length and we do some new ADD definition with lower size, we
> receive same error (-2000 : Row to long).
> 
> Is there any method to reset the internal length as existing column
> sizes ?

In the drop_definition of the alter table statement 

<drop_definition> ::= 
  DROP <column_name>,... [<cascade_option>] [RELEASE SPACE]
| DROP (<column_name>,...) [<cascade_option>] [RELEASE SPACE]
| DROP CONSTRAINT <constraint_name> | DROP PRIMARY KEY 

(see 
http://www.sapdb.org/htmhelp/d7/efa64e014c11d3a97d00a0c9449261/frameset.htm
)

you missed the explanation for RELEASE SPACE:

The columns are marked as dropped in the metadata of the table. 
A DROP definition does not automatically reduce the memory requirements of
the underlying table. 
RELEASE SPACE forces the column values of the dropped columns to be dropped
in every row in the table. 
With large tables, in particular, this may take more time, since extensive
copy operations have to be carried out.

--> It is not just an easy 'reset of some meta-info', it is 'copying of the
remaining columns' and therefore
making each row smaller --> decrease the internal length of the row.

Elke
SAP Labs Berlin
_______________________________________________
sapdb.general mailing list
[EMAIL PROTECTED]
http://listserv.sap.com/mailman/listinfo/sapdb.general

Reply via email to