- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章PostgresSql 多表关联删除语句的操作由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
最近用PostgresSql数据库进行多表关联删除的操作,在写sql语句的时候遇到了问题:
1
2
|
DELETE
s.*
FROM
student s,classroom c
WHERE
s.cid = c.id
AND
s.sid = 1
DELETE
FROM
student s,classroom c
WHERE
s.cid = c.id
AND
s.sid = 1
|
上面两种写法操作后提示报错,下面是PostgresSql数据库对多表关联操作的正确用法,多张表之间用USING连接:
1
|
DELETE
FROM
student s USING classroom c
WHERE
s.cid = c.id
AND
s.sid = 1
|
补充:PostgresSQL中的限制和级联删除 。
删除和更新时对应的操作是一样的 。
1 Restrict 禁止删除被引用的行 (不能将约束检查推迟到事物的晚些时候) 。
2 No Action 如果存在任何引用行,则抛出错误,如果不声明任何行为则No Action就是缺省行为 (允许约束检查推迟到事物的晚些时候) 。
3 Cascade 在删除一个被引用的行时,引用他的行被自动删除 。
4 Set Null (外键上才有) 删除被引用行时,引用他的字段设置为NULL 。
5 Set Default (外键上才有) 删除被引用行时,引用他的字段被设置为缺省值 。
注意:一个动作声明为Set Default 但是缺省值并不能满足外键,那么动作就会失败 。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我。如有错误或未考虑完全的地方,望不吝赐教.
原文链接:https://blog.csdn.net/weixin_41595700/article/details/94985611 。
最后此篇关于PostgresSql 多表关联删除语句的操作的文章就讲到这里了,如果你想了解更多关于PostgresSql 多表关联删除语句的操作的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
最近用PostgresSql数据库进行多表关联删除的操作,在写sql语句的时候遇到了问题: ?
以下 postgres 查询有效: dvdrental=# SELECT title, COUNT(title) AS c FROM film JOIN inventory ON f
我必须遵循在 postgres 中工作的迁移: ALTER TABLE task_def DROP COLUMN retry_count, DROP COLUMN timeout_second
我已经使用 terraform 将 Azure PostgresSQL 灵活服务器部署为 PAAS,运行良好。现在我想使用 terraform 创建不同的角色并为数据库分配不同的权限。但它引发了下面提
给定以下数据: select a,b from newtable; a | b ---+--- a | f a | f a | f b | f b | f b | t (6 rows)
我想将一些数据从 postgresSQL 表导入到 Excel2016。我通过单击“新查询”并选择“从数据库”->“从 PostgresSQL 数据库”来尝试: 但随后我收到以下错误: Details
大家好,我在 Postgres 上的第一个数据库遇到了一个问题,我找不到解决方案,我试图查看是否是设置自动提交的问题,但显然从 postgres 9.x 来看,这是一个不确定的操作。该文档表明这可能是
我是一名优秀的程序员,十分优秀!