回答

收藏

PostgreSQL:外键/删除级联

技术问答 技术问答 112 人阅读 | 0 人回复 | 2023-09-13

我有两个像这样的表:
7 l! X  Q4 l$ D" J6 {. vDROP   TABLE  IF EXISTS schemas.book;/ [/ ?4 j7 z; Z- B
DROP   TABLE  IF EXISTS schemas.category;  v: D: O4 n( {0 y  @
DROP   SCHEMA IF EXISTS schemas;
, g, o4 N) }9 z/ a" l9 Z) e/ _CREATE SCHEMA schemas;0 d& E' A5 H- u( l) }$ u0 g
CREATE TABLE schemas.category (* D" ?; H0 e+ I- z) o+ g: b( h
  id          BIGSERIAL PRIMARY KEY,1 Q4 x0 O: F; K: ]6 {1 k2 b
  name        VARCHAR   NOT NULL,/ v3 t4 |" a4 C' z& D. q# I
  UNIQUE(name), l# V- o% ]$ r, O1 A% {6 `/ ~
);
, K2 J  `$ V2 v2 G1 pCREATE TABLE schemas.book (
6 }' T; Q# x$ s  id          BIGSERIAL PRIMARY KEY,
) z( `& W" G+ }/ N7 g  published   DATE      NOT NULL,
6 h% [+ p) R" N% [6 x  category_id BIGINT    NOT NULL REFERENCES schemas.category ON DELETE CASCADE ON UPDATE CASCADE,2 Q+ x' Z1 I; l( Q6 J# L
  author      VARCHAR   NOT NULL,
$ j$ K) F; \( W, H! A3 @  name        VARCHAR   NOT NULL,
" r' ~, f( J0 I0 G" d) \: S. w  UNIQUE(published, author, name),! V9 ?/ V' Q, Y! o4 K
  FOREIGN KEY(category_id) REFERENCES schemas.category (id)
9 l5 j5 c& k# _& }* D" T);
5 Y. }6 ], F: C( O因此,逻辑很简单,用户删除了类别x下??的所有书籍,从猫中删除了x之后,我尝试了上述方法,但不起作用,在我清理了表格书籍后,表格类别仍被填充,这是怎么回事?# F  T3 }6 ]) q3 P
                . _+ x5 ?) f/ K' T
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则