2016-12-18 102 views
1

這是我的第一個psql數據庫。我正在使用knex。在表上插入或更新違反外鍵約束PSQL/Knex

我有3個表格:users,users_posts和users_comments。我想設置它,以便用戶可以發佈內容並評論其他用戶帖子。

當我有種,我得到這個錯誤的users_comments:

insert or update on table "users_comments" violates foreign key constraint

如何修改我的表,以獲得users_comment表接受外國POST_ID鍵?或者,有沒有更好的方式讓我對帖子和用戶進行評論?

用戶表

table.increments(); 
table.string('username').notNullable().defaultTo('').unique(); 
table.string('email').notNullable().unique(); 
table.specificType('hashed_password', 'char(60)').notNullable(); 
table.timestamps(true, true); 

users_posts表

table.increments(); 
table.integer('user_id') 
.notNullable() 
.references('id') 
.inTable('users') 
.onDelete('CASCADE') 
.index(); 
table.string('post_title').notNullable().defaultTo(''); 
table.string('post_content').notNullable().defaultTo(''); 
table.timestamps(true, true); 

users_comments表

table.increments(); 
table.integer('user_id') 
.notNullable() 
.references('id') 
.inTable('users') 
.onDelete('CASCADE') 
.index(); 
table.integer('post_id') 
    .notNullable() 
    .references('id') 
    .inTable('users_posts') 
    .onDelete('CASCADE') 
    .index(); 
table.string('comment_content').notNullable().defaultTo(''); 
table.timestamps(true, true); 

users_comments種子:

id: 1, 
    user_id: 1, 
    post_id: 1, 
    comment_content:"...", 
    created_at: new Date('2016-06-29 14:26:16 UTC'), 
    updated_at: new Date('2016-06-29 14:26:16 UTC') 

回答

0

得到它的工作。對user_comments進行了這些更改...

table.integer('user_id') 
.notNullable() 
.references('id') 
.inTable('users') 
.onDelete('CASCADE') 
.index(); 
table.integer('id') 
.notNullable() 
.references('user_posts') 
.onDelete('CASCADE') 
.index();  
table.string('comment_content').notNullable().defaultTo(''); 
table.timestamps(true, true); 
相關問題