MySql 中的唯一键

发布于 2024-08-25 01:08:49 字数 401 浏览 2 评论 0原文

我有一个包含四列的表:Col1、Col2、Col3 和 Col4。
Col1、Col2、Col3 是字符串,Col4 是具有自动增量的整数主键。现在我的要求是拥有 Col2 和 Col3 的独特组合。

我的意思是说喜欢。

Insert into table(Col1, Col2, Col3) Values ('val1', 'val2', 'val3');
Insert into table(Col1, Col2, Col3) Values ('val4', 'val2', 'val3');

第二条语句必须抛出错误,因为表中存在“val2”、“val3”的相同组合。但我不能将其作为主键,因为我需要一个自动增量列,因此 col4 必须是主键。请让我知道一种方法,可以将两者都包含在我的表中。

I have a table with four Columns: Col1, Col2, Col3, and Col4.
Col1, Col2, Col3 are strings, and Col4 is a integer primary key with Auto Increment. Now my requirement is to have unique combination of Col2 and Col3.

I mean to say like.

Insert into table(Col1, Col2, Col3) Values ('val1', 'val2', 'val3');
Insert into table(Col1, Col2, Col3) Values ('val4', 'val2', 'val3');

the second statement has to throw error as the same combination of 'val2','val3' is present in the table. But i cant make it as a primary key as i need a auto increment column and for that matter the col4 has to be primary. Please let me know a approach by which i can have both in my table.

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

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

发布评论

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

评论(3

秋叶绚丽 2024-09-01 01:08:49

您可以在数据库模式中设置两个或多个键的组合必须唯一的要求。可以在这里找到:

http://dev.mysql。 com/doc/refman/5.1/en/alter-table.html

这可以通过以下命令来完成

ALTER TABLE YourTable ADD UNIQUE (Col2,Col3);

You can set in the database schema a requirement that a combination of two or more keys be unique. This can be found here:

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

This could be done with a command such as

ALTER TABLE YourTable ADD UNIQUE (Col2,Col3);
韶华倾负 2024-09-01 01:08:49

您可以通过在这些字段上创建唯一索引来做到这一点。

http://dev.mysql.com/doc/refman/ 5.0/en/create-index.html

来自该文档:

UNIQUE 索引创建一个约束,使得索引中的所有值必须是不同的。如果您尝试添加键值与现有行匹配的新行,则会发生错误。此约束不适用于除 BDB 存储引擎之外的 NULL 值。对于其他引擎,UNIQUE 索引允许可以包含 NULL 的列有多个 NULL 值。如果为 UNIQUE 索引中的列指定前缀值,则列值在前缀内必须是唯一的。

You can do this by creating a unique index on those fields.

http://dev.mysql.com/doc/refman/5.0/en/create-index.html

From that doc:

A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if you try to add a new row with a key value that matches an existing row. This constraint does not apply to NULL values except for the BDB storage engine. For other engines, a UNIQUE index allows multiple NULL values for columns that can contain NULL. If you specify a prefix value for a column in a UNIQUE index, the column values must be unique within the prefix.

苄①跕圉湢 2024-09-01 01:08:49

我会检查这些值作为插入逻辑的一部分。在插入之前,写一些类似...

if exists
    select 1 from table
    where col2 = inputCol2 and col3 = inputCol3
then -- combo already exists
    do nothing / set error
else -- combo doesnt exist yet
    insert into table

I would check for these values as part of your insert logic. Before you insert, write something like...

if exists
    select 1 from table
    where col2 = inputCol2 and col3 = inputCol3
then -- combo already exists
    do nothing / set error
else -- combo doesnt exist yet
    insert into table
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文