MySQL 文本数据的区分大小写的外键

发布于 2024-09-06 09:42:34 字数 360 浏览 8 评论 0原文

我的主表中有英语的 ISO 639-2 语言代码(eng、fre、hin 等)作为主键。该列是可能其他表中的外键。现在我的问题是,即使我的主人只有小写值,由于人为错误,一些值被添加到其他带有混合大小写的语言 ID 的表中。尽管有外键,但这并不能阻止它的发生。
现在这是我第一次在 MySQL 中工作,之前我在 Oracle 中工作,它对键应用了区分大小写的功能。应该怎样做才能在 MySQL 中具有相同的功能? 另外列类型应该是什么?
现在是 varchar(3)。我应该将其转换为其他东西吗?我不会在任何查询中使用任何 like 条件,仅使用 =in

I have ISO 639-2 language codes (eng, fre, hin, etc.) in english as primary key in my master table. This column is foreign key in may other tables. Now my issue is even though my master have only lower case values, due to human error some values were added in other tables with language id in mixed cases. Even though there was foreign key, it didn't prevent it from happening.
Now this is first time I am working in MySQL, previously I worked on Oracle and it applies case sensitivity to keys. What should be done to have same functionality in MySQL?
Also what should be the column type?
Right now it is varchar(3). Should I convert it to something else? I am not going to use any like condition in any of the query, only = and in.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挽手叙旧 2024-09-13 09:42:35

发生这种情况是因为列的排序规则不区分大小写 - 就像 latin1_swedish_ci
将其更改为区分大小写的排序规则 - latin1_swedish_cs

ALTER TABLE t1 MODIFY
col1 VARCHAR(3)
字符集 latin1
整理 latin1_swedish_cs;

链接文本

It happens because collation of collumn is case insensitive - something like latin1_swedish_ci
change it to case sensitive collation - latin1_swedish_cs

ALTER TABLE t1 MODIFY
col1 VARCHAR(3)
CHARACTER SET latin1
COLLATE latin1_swedish_cs;

link text

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文