SQL - CONSTRAINT
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 但是缺省值并不能满足外键,那么动作就会失败
本文来自博客园,作者:duchaoqun,转载请注明原文链接:https://www.cnblogs.com/duchaoqun/p/12851823.html
分类:
PostgreSQL
标签:
SQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?