• PostgreSQL 约束语法


    转自 PostgreSQL 添加各种约束语法  

    1. 添加主键

    alter table goods add primary key(sid);

    2. 添加外键

    alter table orders add foreign key(goods_id) references goods(sid)  on update cascade on delete cascade;

    on update cascade: 被引用行更新时,引用行自动更新; 

    on update restrict: 被引用的行禁止更新;

    on delete cascade: 被引用行删除时,引用行也一起删除;

    on dellete restrict: 被引用的行禁止删除;

    3. 删除外键

    alter table orders drop constraint orders_goods_id_fkey;

    4. 添加唯一约束

    alter table goods add constraint unique_goods_sid unique(sid);

    5. 删除默认值

    alter table goods  alter column sid drop default;

    6. 修改字段的数据类型

    alter table goods alter column sid type character varying;

    7. 重命名字段

    alter table goods rename column sid to ssid;

    PostgreSQL外键约束reference 

    外键约束之表约束写法完整语法:
    [ CONSTRAINT constraint_name ] FOREIGN KEY ( column_name [, … ] ) REFERENCES reftable [ ( refcolumn [, … ] ) ] [ MATCH matchtype ] [ ON DELETE action ] [ ON UPDATE action ]

    [ ON DELETE action ] [ ON UPDATE action ]

    当删除被引用行或者更新被引用列时,对于引用表或引用列,不同的action有不同的行为。可用的action如下:

    • NO ACTION

      如果违反外键约束会产生一个错误。如果约束被延迟,那么到事务结束检查约束时如果仍然因为存在一个引用行而违反外键约束,则仍会产生错误。这是默认值。其他的动作action都不能被延迟。

    • RESTRICT

      违反外键约束会产生一个错误。

    • CASCADE

      级联删除或更新。分别删除一个引用行或者更新一个引用列的值。

    • SET NULL

      设置引用列(referencing column(s))的值为null

    • SET DEFAULT

      设置引用列为其缺省值。如果缺省值不是null,那么仍然需要被引用表中有一条记录的被引用字段的值与之匹配,否则操作会失败。

    [ MATCH matchtype ]

    当向引用表的引用列(referencing column(s))插入数据时,根据给定的匹配规则matchtype匹配被引用表的被引用列的值。匹配规则如下:

    • MATCH FULL

      不允许多列外键约束中的任何一个为null,除非他们全部为null,这样不要求被引用表中有与其匹配的数据。

    • MATCH PARTIAL

      此特性尚未实现

    • MATCH SIMPLE

      这是默认值。允许外键约束中的任何一列为null,只要外键约束中的一列为null,则不要求与被引用表相匹配。

    外键约束也可以引用自身表中的字段。

  • 相关阅读:
    挖掘经典:几乎被人遗忘的HTML七种用法
    TechEd 2010 微软技术大会 12月1日3日 北京国家会议中心
    PostSharp摘要
    实现Asp.net Forms身份验证的操作步骤详解
    DTO,DMO,DPO
    CodeSmith和PowerDesigner的安装和数据库创建二
    ASP.NET 2.0 Membership
    C# IEnumerable<T>、IEnumerator<T>、List<T>、ArrayList、[]数组各各的区别
    [转]ActiveWriter集成到VS.NET的NHibernate(ActiveRecord)对象可视化设计工具
    当一个程序员面临太多选择的时候
  • 原文地址:https://www.cnblogs.com/cdyboke/p/6862612.html
Copyright © 2020-2023  润新知