我有下表,并希望确保每一行都是唯一的。 sku_simple_product,branding_position_de,branding_id,handling_group_id和pre_cost_id的组合在此表中只能存在一次。
branding_position_id int(255) Auto-Inkrement
sku_simple_product text
branding_position_de text
branding_position_en text NULL
branding_position_fr text NULL
branding_position_es text NULL
branding_position_it text NULL
branding_position_pl text NULL
branding_position_nl text NULL
branding_id varchar(255)
handling_group_id varchar(255) NULL
is_branding_incl int(11) [0]
pre_cost_id varchar(255)
现在我有以下问题:
答案 0 :(得分:0)
创建一个UNIQUE
约束,如下所示:
alter table my_table add constraint uq1 (
sku_simple_product,
branding_position_de,
branding_id,
handling_group_id,
pre_cost_id
);
但是,由于列的数据类型为TEXT
,因此该解决方案可能效率很低。 TEXT
列可以存储很大的文本,并且检查其唯一性可能很慢。
如果可能,我建议将类型更改为较小的类型,例如VARCHAR
。
答案 1 :(得分:0)
是的,因为所有其他数据都可以随时间变化,并且效率更高。在这里您可以看到一些advantages and disavantages.
您可以使用类似这样的东西。
INSERT INTO companies
(id, full_name, address, phone_number)
VALUES
(1, ‘Apple’, '1 Infinite Loop, Cupertino, California', 18002752273)
ON DUPLICATE KEY UPDATE
full_name = ‘Apple’
address = ‘1 Infinite Loop, Cupertino, California’
phone_number = 18002752273;