zoukankan      html  css  js  c++  java
  • SQL

    Summary

    • 关于约束的一些记录。
    • 非主键字段被设置成外键的时候提示:[Code: , SQL State: 42830] ERROR: there is no unique constraint matching given keys for referenced table "t1"

    Demo

    // 创建 author 表
    create table author (id INTEGER, name char(255));
    // 唯一主键才能被添加成外键。
    alter table author add primary key(id);
    // 创建 book 表
    create table book (id INTEGER, author_id INTEGER, name char(255));
    
    // 第一,可以直接删除 Book 表记录,Author 表数据不会受到影响。
    // 第二,删除 Author 表记录,串联删除 Book 表数据。
    alter table book add foreign key(author_id) references author(id) on delete cascade;
    
    // 删除约束
    alter table book drop constraint 'book_author_id_fkey';
    

    Action

    • Restrict 禁止删除被引用的行 (不能将约束检查推迟到事物的晚些时候)
    • No Action 如果存在任何引用行,则抛出错误,如果不声明任何行为则No Action就是缺省行为 (允许约束检查推迟到事物的晚些时候)
    • Cascade 在删除一个被引用的行时,引用他的行被自动删除
    • Set Null (外键上才有) 删除被引用行时,引用他的字段设置为NULL
    • Set Default (外键上才有) 删除被引用行时,引用他的字段被设置为缺省值

    注意:一个动作声明为Set Default 但是缺省值并不能满足外键,那么动作就会失败

  • 相关阅读:
    ASP.NET MVC 常用内置验证特性 简介
    为什么要有get方法?-多态内存分析的应用
    多态的内存分析-转载
    抽象类和接口
    多态
    通过序列化复制整个对象
    检查异常和非检查异常
    怎样抛出自己定义的异常
    try catch和throws怎么用?-结合使用
    两个对象整体内容的比较-重写对象的equals方法
  • 原文地址:https://www.cnblogs.com/duchaoqun/p/12851823.html
Copyright © 2011-2022 走看看