将唯一约束应用于 SQL 中的列组合
我在 MySQL 数据库中有一个名为 Product_attributes 的表。它由产品SKU(外键)、属性标签和属性值组成。我需要确保 SKU 和属性标签的组合是唯一的。
示例 -
插入此内容 合法
{001, 'weight', '100 lbs'}
{001, 'color', 'blue'}
{002, 'weight', '200 lbs'}
这 非法
{001, 'weight', '100 lbs'}
{001, 'weight', '200lbs' }
- 如何强制执行此约束?
- 我是否必须使用服务器端语言执行此操作,或者我可以配置数据库来强制执行此操作吗?
- 这种类型的约束叫什么?
I have a table called product_attributes in a MySQL
Database. It consists of a product SKU (foreign key), an attribute label and an attribute value. I need to ensure that combinations of SKU and attribute labels are unique.
EXAMPLE -
inserting this would be legal
{001, 'weight', '100 lbs'}
{001, 'color', 'blue'}
{002, 'weight', '200 lbs'}
This would be illegal
{001, 'weight', '100 lbs'}
{001, 'weight', '200lbs' }
-How can enforce this constraint?
-Do I have to do this in my server-side language or can I configure my database to enforce this?
-What is this type of constraint called?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尚未对此进行测试,但用于添加唯一键的 DDL(数据定义语言)是
主键是
Haven't tested this but the DDL (Data Definition Language) for adding a Unique key is
Primary key is
对两行编辑使用唯一约束
:从唯一索引改写为唯一约束。哎呀
Use a unique constraint on the two rows
edit: reworded from unique index to unique constraint. oops
您可以将
ProductSKU
和AttributeLabel
设为复合 PK,或对它们设置唯一约束。两者都会达到你的目的。为了方便起见,您可能希望使用代理键(或者因为您的模型层需要它),在这种情况下,唯一约束是可行的方法。通常,无论您对数据库执行什么操作,您仍然需要代码来处理应用程序中的异常。
You can either make
ProductSKU
andAttributeLabel
a composite PK, or put a unique constraint on them. Either will achieve your purpose. You may wish to use a surrogate key for convenience (or because your model layer requires it), in which case the unique constraint is the way to go.Typically you will still need code to handle exceptions in your applications, regardless of what you do with the database.