码迷,mamicode.com
首页 > 数据库 > 详细

SQL - CONSTRAINT

时间:2020-05-08 18:09:33      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:rest   create   表数据   prim   关于   pre   unique   cad   ict   

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 但是缺省值并不能满足外键,那么动作就会失败

SQL - CONSTRAINT

标签:rest   create   表数据   prim   关于   pre   unique   cad   ict   

原文地址:https://www.cnblogs.com/duchaoqun/p/12851823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!