asp实现sql的备份与恢复(2)



如果要改变表的属性,你必须是表的所有者. 

注意
COLUMN 关键字是多余的,可以省略. 
如果"*"跟在一个表名后面,表示该命令要对该表和所有继承级别低于该表的表进行操作;缺省时,该属性(更改)不会增加到任何子表或修改任何子表的相关名称。当增加或修改一个上级表(译注:继承级别高的表)的属性时总是应该这样的。否则,象下面这样的在继承级上进行的查询 

SELECT NewColumn FROM SuperClass*
将不能工作,因为子表会比上级表少一个属性。 
在目前的实现里,新列/字段的缺省(值)和约束子句会被忽略。你可以随后用 ALTER TABLE 的 SET DEFAULT 形式设置缺省(值)。(你还不得不用 UPDATE 把已存在行更新为缺省值。) 

在目前的实现里,只有 FOREIGN KEY 约束可以增加到表中.要创建或者删除一个唯一约束,可以创建一个唯一索引(参阅 CREATE INDEX).要想增加 check (检查)约束,你需要重建和重载该表,用的参数是 CREATE TABLE 命令的其他参数. 

要修改表的结构,你必须是表的所有人。不允许更改系统表结构的任何部分。PostgreSQL 用户手册 里有关于继承的更多信息. 


请参考 CREATE TABLE 部分获取更多有效参数的描述. 

用法
向表中增加一个 VARCHAR 列: 
ALTER TABLE distributors ADD COLUMN address VARCHAR(30);
对现存列改名: 
ALTER TABLE distributors RENAME COLUMN address TO city;
对现存表改名: 
ALTER TABLE distributors RENAME TO suppliers;
向表中增加一个外键约束: 
ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses(address) MATCH FULL
兼容性

SQL92ADD COLUMN 形式是兼容的,除了上面说的缺省(值)和约束外。ALTER COLUMN 形式是完全兼容的。 
SQL92 对 ALTER TABLE 声明了一些附加的Postgres目前还不直接支持的功能: 

ALTER TABLE table DROP CONSTRAINT constraint { RESTRICT CASCADE }
增加或删除表的约束(比如象检查约束,唯一约束或外键约束)。要创建或删除一个唯一约束,对应地创建或删除一个唯一索引,要修改其他类型的约束,你需要重建和重载该表,使用 CREATE TABLE  命令的其他参数. 
例如,删除表 distributors 的任何约束: 

CREATE TABLE temp AS SELECT * FROM distributors;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/3426.html