PostgreSQL学习日志

distinct [column1] |[column2]|…
distinct 表示查询不重复的元素,如上的话,表示column 1 和column2 同时不重复的数据。

外键设置
参考资料:
http://blog.csdn.net/wujiang88/article/details/51578794
表 products

CREATETABLE

products (
   product_no integer PRIMARY KEY,
   name text,
   price numeric
);

方式1

CREATETABLE

orders (
    order_id integer PRIMARY KEY,
    product_no integer REFERENCES products (product_no),
    quantity integer
);

方式二:

CREATETABLE
orders (
    order_idintegerPRIMARY KEY,
    product_nointeger,   
    CONSTRAINTorder_product_fk
    FOREIGNKEY (product_no) REFERENCES products (product_no),
    quantity integer
);

外键约束之表约束写法完整语法:
[ 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,则不要求与被引用表相匹配。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值