sql >> データベース >  >> RDS >> PostgreSQL

Sequelizeは制約として外部キーを作成しません

    まず、ORMがデータベースで外部キー制約を使用するのではなく、この種のことを内部で処理することは珍しくありません。

    次に、ORMがペアを要求することは珍しくありません。 予想されるすべての内部処理をトリガーするための関連ステートメントの数。

    var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
      , User = this.sequelize.define('User', { username: Sequelize.STRING })
    
    User.hasMany(Task)
    Task.belongsTo(User)
    

    最後に、Sequelizeは実際に外部キー宣言をデータベースに書き込みますが、onUpdateを使用して何らかのアクション(または非アクション)も宣言した場合に限ります。 またはonDelete

    User.hasMany(Task, { onDelete: 'SET NULL', onUpdate: 'CASCADE' })
    
    CREATE TABLE IF NOT EXISTS `Task` (
      `id` INTEGER PRIMARY KEY, 
      `title` VARCHAR(255), 
      `user_id` INTEGER REFERENCES `User` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
    );
    

    コード例のソース




    1. Oracleで不足している日付をグループごとに入力するにはどうすればよいですか

    2. mysql結合テーブル

    3. 類似しているが重複していない行を見つけるためのMySQLクエリ

    4. 追加のテーブルを作成せずにSQLでシーケンスのギャップを見つける