小编Jor*_*ril的帖子

为什么某些 DBMS 不允许回滚某些 DDL 语句?

最近我发现 MySQL支持回滚 DDL,例如“alter table”... 习惯了 PostgreSQL,这让我感到奇怪,但我的一个朋友告诉我,即使是 Oracle 也不允许它..不支持它是否有技术原因?对他们来说,这只是一个“无趣”的功能吗?

编辑:刚刚发现这个比较。它看起来像有很多的DBMS是支持事务DDL。

feature-comparison database-agnostic ddl rollback

21
推荐指数
4
解决办法
3866
查看次数

非唯一的多列外键

我有一个“评论”表,可以模拟某个主题的对话,如下所示:

id serial  
topic_id integer  
parent_comment_id integer
body text
Run Code Online (Sandbox Code Playgroud)

因此,每条评论都有对其主题的引用,并最终引用其父评论(如果它不是该主题的第一条评论)。
我想添加一个约束,以防止添加主题/父项不匹配的行(例如,通过引用没有所需评论的主题,或者相反地引用错误主题的评论)。
这可能吗?是否需要触发器?

(为了记录,我试过

ALTER TABLE comments ADD FOREIGN KEY (parent_comment_id, topic_id)
                 REFERENCES comments (id, topic_id)
Run Code Online (Sandbox Code Playgroud)

但它抱怨there is no unique constraint matching given keys for referenced table "comments"

postgresql foreign-key constraint

8
推荐指数
1
解决办法
8677
查看次数