如何创建 CHECK 约束来检查 Sequel 中的一系列可能值。一个红宝石 ORM。
CHECK (1 = 0)如输出日志中所见,所有尝试似乎都会生成。
这是我尝试使用 Sequel 的 DSL 建模的表格:
create table memberships(  
      id integer primary key autoincrement
    , group_id integer references groups(id) on delete cascade
    , user_id integer references users(id) on delete cascade
    , role char check (role in ('u','a','o')) default 'u'
    , unique(group_id, user_id, role)   
);
这是 Sequel 模式生成代码:
db.create_table(:memberships){
    primary_key :id
    foreign_key :user_id, :users
    foreign_key :group_id, :groups  
    char :role, default: 'u'
    check{role=='u' or role=='a'} #<-----this line generates CHECK (1 = 0)
    unique [:user_id, :group_id, :role]
}