REFERENCE KEY在node-orm2中
我正在研究基于node.js的REST API,我select了postgresql
数据库来存储数据。 假设这个数据库有两个表名User
和Comment
。 任何Comment
属于一个User
,当我们决定删除一个User
,他/她的Comment
必须删除。 所以,我devise了我的桌子如下:
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
。 我devise了两个简单的模型来处理这个简单的代码:
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
?
提前致谢 :)
尝试使用这样的可延迟:
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 )