ForĮxample, a value of -1 implies that all values in the column areĭistinct, while a value of -0.5 implies that each value appears Table the exact count is to be computed by multiplying theĮstimated table size by the absolute value of the given number. Negative value, which must be greater than or equal to -1,ĭistinct nonnull values in the column is linear in the size of the The specified number of distinct nonnull values. When set to a positive value, ANALYZE will assume that the column contains exactly The statistics gathered for the table plus its inheritanceĬhildren. Itself, while n_distinct_inherited affects n_distinct affects the statistics for the table Number-of-distinct-values estimates made by subsequent ANALYZE operations. Only defined per-attribute options are n_distinct and n_distinct_inherited, which override the This form sets or resets per-attribute options. 1 to revert to using the system default statistics targetįor more information on the use of statistics by the PostgreSQL query planner, refer to Section 14.2. Target can be set in the range 0 to 10000 alternatively, set it to This form sets the per-column statistics-gathering target for You can only use SET NOT NULL when the column contains no null These forms change whether a column is marked to allow null Statements on the view before the view's ON Defaults can also be created for views, in Theĭefault values only apply to subsequent INSERT commands they do not cause rows already in These forms set or remove the default value for a column. No implicit or assignment cast from old to new type. USING clause must be provided if there is Is the same as an assignment cast from old data type to new. New column value from the old if omitted, the default conversion USING clause specifies how to compute the The optional COLLATEĬlause specifies a collation for the new column if omitted, theĬollation is the default for the new column type. Simple table constraints involving the column will be automaticallyĬonverted to use the new column type by reparsing the originally This form changes the type of a column of a table. IF EXISTSĭo not throw an error if the table does not exist. Indexes and tableĬonstraints involving the column will be automatically dropped asĪnything outside the table depends on the column, for example,ĮXISTS is specified and the column does not exist, no error is This form adds a new column to the table, using the same syntaxĪs CREATE TABLE. SET SCHEMA new_schema where action is one of:ĪDD column_name data_type ]ĭROP column_name ĪLTER column_name TYPE data_type ĪLTER column_name SET DEFAULT expressionĪLTER column_name DROP DEFAULTĪLTER column_name USING INDEX index_name RENAME CONSTRAINT constraint_name TO new_constraint_name In neither case is a rewrite of the table required.ALTER TABLE name If no DEFAULT is specified, NULL is used. That value will be used for the column for all existing rows. But still, that would only lock the table, not the database.įrom Postgres documentation about ALTER TABLE: "When a column is added with ADD COLUMN and a non-volatile DEFAULT is specified, the default is evaluated at the time of the statement and the result stored in the table's metadata. If the default value was an expression that could potentially be different for each row, Postgres would rewrite the table to physically put the default column into all rows. Only when a row is updated, the new row will contain an actual value for the column. When that column is accessed (and no value is available) then it will use the default value from the column's definition. So adding the column is actually done in a few milliseconds because Postgres only stores the information that a new column is available. Postgres will not actually rewrite the table because you provided a constant value ( false) for the default value. An ALTER TABLE will never lock "the database", it will only lock the table.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |