2013-07-31 2 views
2

node.js를 기반으로하는 REST API에서 데이터를 저장하기 위해 postgresql 데이터베이스를 선택했습니다. 이 데이터베이스에 UserComment의 두 테이블 이름이 있다고 가정합니다. Comment은 (는) User에 속하므로 User을 제거하기로 결정한 경우 Comment 명의 사용자를 삭제해야합니다. 그래서 다음과 같이 테이블을 디자인했습니다 :노드 -orm2의 참조 키

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 KEYON UPDATE CASCADE ON DELETE CASCADE 같은 것을 어떻게 할 수 있습니까?

답변

1

보십시오 : 사전에

감사는 다음과 같이 연기를 사용하는 :

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 
)