Unique constraint that allows empty values in MySQL

MysqlDatabase DesignConstraints

Mysql Problem Overview


I have a field that stores product codes. The codes are unique, but some products simply doesn't have a code. I can't invent codes because those are providers codes.

Is this kind of constraint possible in MySQL?

I'm a noob with stored procedures and triggers, so if the solution involves one of these, please be patient.

Update: The column is NOT Null. That's why I was unable to do this.

Mysql Solutions


Solution 1 - Mysql

Yes, you can do this. See the MySQL reference (version 5.5).

> 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. For all engines, a UNIQUE index allows multiple NULL values for columns that can contain NULL.

Solution 2 - Mysql

Yes, if you make the product code column nullable (not declared with NOT NULL), the unique key will allow multiple rows with NULL product codes.

Solution 3 - Mysql

MySQL still allows for multiple rows to have a value of NULL in a unique column.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionThe DisintegratorView Question on Stackoverflow
Solution 1 - MysqllutzView Answer on Stackoverflow
Solution 2 - MysqlchaosView Answer on Stackoverflow
Solution 3 - Mysqlcg.View Answer on Stackoverflow