gpt4 book ai didi

ruby - 在 n 为 :m relation 的表中为每个用户创建唯一约束

转载 作者:行者123 更新时间:2023-11-29 13:30:51 24 4
gpt4 key购买 nike

我刚才问了一个问题,create unique constraints per user答案很简单。

要在列上创建唯一索引,但在每个用户的基础上,我所要做的就是:

unique [:user_id, :name] # SQL syntax: UNIQUE (user_id, name)

但用户表和引用 user_id 的表之间的关系是 1:n(用户到位置),所以我在 foreign_key 中有一个 location 表,它引用 user_id。这个问题是关于两个表之间的 n:m 关系以及在其中一个表上添加唯一约束。

Sequel.migration do
change do

Sequel::Model.db.run 'CREATE EXTENSION IF NOT EXISTS "uuid-ossp"'

create_table :customer do
String :id, :type => :uuid, :primary_key => true, :default => Sequel.function(:uuid_generate_v4)


DateTime :created_at
DateTime :updated_at


index :id, :unique => true
end
end
end

Sequel.migration do
change do

Sequel::Model.db.run 'CREATE EXTENSION IF NOT EXISTS "uuid-ossp"'

create_table :role do
String :id, :type => :uuid, :primary_key => true, :default => Sequel.function(:uuid_generate_v4)


String :name, :unique => true, :null => false # TODO: unique, per customer


DateTime :created_at
DateTime :updated_at


unique [:customer_id, :name]

index :id, :unique => true
full_text_index :name, :index_type => :gist
end
end
end

上面的代码说明了我提到的两个表有一个 n:m 关系(客户到角色),下表说明了两个表的外键连接表:

Sequel.migration do
change do

Sequel::Model.db.run 'CREATE EXTENSION IF NOT EXISTS "uuid-ossp"'

create_table :customer_role do
String :id, :type => :uuid, :primary_key => true, :default => Sequel.function(:uuid_generate_v4)

foreign_key :customer_id, :customer, :type => :uuid
foreign_key :role_id, :role, :type => :uuid

index :id, :unique => true
end
end
end

我想做的是在 role 表上声明一个唯一约束,例如 UNIQUE (customer_id, :name)。但我做不到,那么我该如何通过其他方式实现呢?

最佳答案

What I would like to do is to declare a unique constraint such as UNIQUE (customer_id, :name) on the role table. But I cannot do that, so how do I achieve that in another way?

问题的本质似乎是列 role.customer_id 不存在。事实上,我很确定该列不应该 存在,所以这部分实际上很好。

至少,你需要

unique [:customer_id, :role_id]

在“客户角色”中。

关于ruby - 在 n 为 :m relation 的表中为每个用户创建唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23935615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com