我正在使用 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指示我创建约束而不是唯一索引的 Hook 。
最佳答案
DBIx::Class 本身不创建 DDL 查询,因此您的问题不适用。 如果您使用 $schema->deploy,则在后台使用 SQL::Translator。我不认为 DBIC 可以保存这种特殊的元数据来控制唯一 key 的创建,但请查看 SQL::Translator 文档以确保这一点。 我建议使用 deployment_statements 创建 DDL 语句并修改生成的语句,或者使用 after deploy 方法修饰符执行 alter SQL 语句以使生成的约束不区分大小写。
关于sql - 如何使用 DBIx::Class 创建不区分大小写的唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14287150/