Sql 如何使用DBIx::Class创建不区分大小写的唯一索引

Sql 如何使用DBIx::Class创建不区分大小写的唯一索引,sql,perl,postgresql,dbix-class,Sql,Perl,Postgresql,Dbix Class,我正在使用Postgres,我希望使用DBIx::Class在我的数据库上创建一个不区分大小写的唯一约束 我理解这样一个例子: __PACKAGE__->add_unique_constraint("table_unique_constraint", ["col_name"]); 将在给定表上创建唯一约束 我正在寻找一种方法来创建一个不区分大小写的惟一约束,使用DBIx::Class可以更好地实现这一点,但我想说的是,我想创建一个唯一的索引来实现这个约束。我尝试生成的SQL查询类似于:

我正在使用Postgres,我希望使用DBIx::Class在我的数据库上创建一个不区分大小写的唯一约束

我理解这样一个例子:

__PACKAGE__->add_unique_constraint("table_unique_constraint", ["col_name"]);
将在给定表上创建唯一约束

我正在寻找一种方法来创建一个不区分大小写的惟一约束,使用DBIx::Class可以更好地实现这一点,但我想说的是,我想创建一个唯一的索引来实现这个约束。我尝试生成的SQL查询类似于:

CREATE UNIQUE INDEX table_unique_constraint ON "table_name"(lower("column_name"));
这个示例确保我根据表中的值检查要插入的条目,而不考虑大小写

有没有办法将此添加到结果中?Esp,锁销是较低的()


当然,这个命令指示我创建约束,而不是唯一索引的挂钩

类本身不创建DDL查询,所以您的问题不适用。 如果您使用$schema->deploy,那么将在后台使用SQL::Translator。我不认为DBIC可以保存这样特殊的元数据来控制唯一密钥的创建,但请查看SQL::Translator文档以确定是否可以。 我建议使用deployment_语句创建DDL语句并修改生成的语句,或者使用执行alter SQL语句的after deploy method修饰符使生成的约束不区分大小写。

我认为,应该对您有所帮助。将“lower”功能添加到“filter\u to\u storage”中。