zoukankan      html  css  js  c++  java
  • PostgreSQL之数据定义(一)继承

      PostgreSQL实现了表继承.capitals用于省会城市,cities用于非省会的城市.语法如下:

    CREATE TABLE cities (
        name            text,
        province        text,
        state           int     
    );
    
    CREATE TABLE capitals (
        level           float
    ) INHERITS (cities);

      增加初始化数据:

    insert into cities values('荆州','湖北',1);
    insert into cities values('荆门','湖北',1);
    insert into capitals values('武汉','湖北',1,1.5);

      根据不同方式查询结果(only 可以排除子表):

    select * from capitals;
    -------------------------
    武汉    湖北    1    1.5
    select * from cities;
    -----------------------
    荆州    湖北    1
    荆门    湖北    1
    武汉    湖北    1
    select * from only cities;
    ----------------------------
    荆州    湖北    1
    荆门    湖北    1

    警告

      继承特性的一个严肃的限制是索引(包括唯一约束)和外键约束值应用在单个表上而非它们的继承子女。在外键约束的引用端和被引用端都是这样。如果我们声明cities.nameUNIQUE或者PRIMARY KEY,这将不会阻止capitals表中拥有和cities中城市同名的行。而且这些重复的行将会默认显示在cities的查询中。事实上,capitals在默认情况下是根本不能拥有唯一约束的,并且因此能够包含多个同名的行。我们可以为capitals增加一个唯一约束,但这无法阻止相对于cities的重复。

  • 相关阅读:
    Linux网络编程--socket
    UDP学习总结
    TCP协议学习总结
    DNS协议总结
    DHCP协议总结
    ARP协议总结
    二层协议--MPLS协议总结
    二层协议--LLDP协议总结
    二层协议--LACP协议总结
    二层协议--STP协议总结
  • 原文地址:https://www.cnblogs.com/ryjJava/p/14320644.html
Copyright © 2011-2022 走看看