如何在Diesel schema中定义唯一约束,使username字段在表创建时生效?
给Diesel Schema的username字段添加唯一约束
当然可以实现,有两种常用方式:
1. 在Schema定义中直接添加约束属性
在username字段上添加#[unique]注解,Diesel会在生成迁移文件时自动为该字段添加唯一约束。修改后的Schema代码如下:
diesel::table! { account (organization_id) { #[max_length = 255] organization_id -> Varchar, #[max_length = 255] name -> Varchar, #[max_length = 255] description -> Varchar, account_was_verified -> Bool, #[max_length = 255] #[unique] username -> Varchar, #[max_length = 255] password_hash -> Varchar, } }
之后执行diesel migration generate create_account生成迁移文件时,对应的SQL语句会自动包含username字段的唯一约束。
2. 手动修改迁移文件
如果已经生成了迁移文件,或者更偏好手动控制约束逻辑,可以直接编辑迁移的SQL文件:
- 创建表时直接添加约束:
CREATE TABLE account ( organization_id VARCHAR(255) PRIMARY KEY, name VARCHAR(255), description VARCHAR(255), account_was_verified BOOLEAN, username VARCHAR(255) UNIQUE, password_hash VARCHAR(255) );
- 若后续需要添加约束,可使用ALTER语句:
ALTER TABLE account ADD CONSTRAINT unique_username UNIQUE (username);
内容的提问来源于stack exchange,提问作者Drasungor
相关产品推荐
相关产品推荐

