我正在使用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,捕获量是lower()。
当然DBIx::Class Manual指示我为唯一索引创建约束而不是钩子。
答案 0 :(得分:2)
DBIx :: Class本身不会创建DDL查询,因此您的问题不适用。 如果您使用$ schema-> deploy,那么它将使用SQL :: Translator。我不认为DBIC可以拥有这样的特殊元数据来控制唯一的密钥创建,但是看看SQL :: Translator文档是非常确定的。 我建议使用deployment_statements创建DDL语句并修改生成的语句,或使用执行alter SQL语句的after deploy方法修饰符来使生成的约束不区分大小写。