设置列只允许2个值中的1个

时间:2016-09-05 03:25:30

标签: mysql

是否可以设置列,使其只能有2个不同的值中的1个。例如,现在类型是varchar(8),但我希望它只有接受的有效值是“比特币”或“贝宝”。我知道我可以用PHP做到这一点,但是有可能用MySQL吗?

3 个答案:

答案 0 :(得分:3)

在MySQL中,您有三个或四个选择。

  • 您可以使用枚举类型。这定义了类型和允许的值。
  • 您可以将外键关系用于仅包含这两个值的引用表。
  • 您可以使用触发器来强制执行这些值。

在其他数据库中,您还可以选择使用检查约束。 MySQL实际上并没有实现这些。

答案 1 :(得分:1)

请替换您的表名和您的cloumn名称

ALTER TABLE <table name>
    CHANGE COLUMN <column name> ENUM('Bitcoin','Paypal') NOT NULL;

答案 2 :(得分:1)

如果你想采用完全规范化的方法,我会做这样的事情:

Customer
id auto_increment pk
name VARCHAR(255)
payment_type_id INT(10)

然后有一个单独的表:

PaymentTypes
id auto_increment pk
name VARCHAR(255)

如果您使用的是InnoDB,则需要在support_type列上添加一个外键。

要查询付款类型,只需加入表格:

SELECT c.Name, pt.Name as 'Payment Type'
FROM Customer c
LEFT JOIN PaymentTypes pt ON pt.id = c.payment_type_id

这是更好的选择之一,因为它允许稍后添加付款类型。