[英]REFERENCE KEY in node-orm2
我正在基于node.js的REST API上工作,我选择了postgresql
数据库来存储数据。 假设此数据库有两个表,分别为User
和Comment
。 任何Comment
属于一个User
,当我们决定删除一个User
,必须删除该User
的Comment
。 因此,我将表设计如下:
CREATE TABLE User(
user_id SERIAL,
username VARCHAR(32) NOT NULL,
password VARCHAR(32) NOT NULL,
CONSTRAINT pk_user PRIMARY KEY (user_id),
CONSTRAINT uq_user UNIQUE (username)
)
CREATE TABLE Comment(
comment_id SERIAL,
user_id INTEGER NOT NULL,
content TEXT NOT NULL,
CONSTRAINT pk_cmnt PRIMARY KEY (comment_id),
CONSTRAINT fk_cmnt FOREIGN KEY (user_id) REFERENCES User(user_id)
ON UPDATE CASCADE ON DELETE CASCADE
)
但是我不运行此代码,而是使用node-orm2
。 我设计了两个简单的模型来处理此简单代码:
var User = db.define('user', {
username: {
type: 'text',
size: 32, // VARCHAR(32)
required: true, // NOT NULL
unique: true // UNIQUE INDEX
},
password: {
type: 'text',
size: 32, // VARCHAR(32)
required: true // NOT NULL
}
}, {
id: 'user_id' //SERIAL
});
var Cmnt = db.define('comment', {
content: {
type: 'text',
required: true // NOT NULL
}
}, {
id: 'comment_id' //SERIAL
});
Cmnt.hasOne('user', User, {required: true}); // CREATE ASSOCIATION KEY
并使数据库与这些模型同步:
db.sync();
现在,我要插入属于user_id不存在的用户的新注释。 因此, Comment
模型接受此并将行插入到comment
表中。
我的问题是,我该怎么做,例如REFERENCE KEY
和ON UPDATE CASCADE ON DELETE CASCADE
的ON UPDATE CASCADE ON DELETE CASCADE
?
提前致谢 :)
尝试像这样使用deferrable:
CREATE TABLE Comment(
comment_id SERIAL,
user_id INTEGER NOT NULL,
content TEXT NOT NULL,
CONSTRAINT pk_cmnt PRIMARY KEY (comment_id),
CONSTRAINT fk_cmnt FOREIGN KEY (user_id) REFERENCES User(user_id)
ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.