是否可以设置列,使其只能有2个不同的值中的1个。例如,现在类型是varchar(8),但我希望它只接受有效的值是“比特币”或“贝宝”。我知道我可以用PHP来做到这一点,但是MySQL有可能吗?设置列,以便只允许2个值中的1个
0
A
回答
1
请与您的表名,并与您cloumn名
ALTER TABLE <table name>
CHANGE COLUMN <column name> ENUM('Bitcoin','Paypal') NOT NULL;
+0
即使不更改,也需要指定新的列名称。 (换句话说,'
+0
完美,这实际上是我正在寻找。 @Gordon Linoff解释说,但你告诉我它是如何完成的。我在phpMyAdmin中做了更改,结果非常好。 –
3
在MySQL中,您有三个或四个选择。
- 您可以使用枚举类型。这定义了类型和允许的值。
- 您可以将外键关系用于仅包含这两个值的参考表。
- 您可以使用触发器来强制执行这些值。
在其他数据库中,您也可以选择使用检查约束。 MySQL实际上并没有实现这些。
1
取代如果你想去一个完全标准化的做法,我会做这样的事情:
Customer
id auto_increment pk
name VARCHAR(255)
payment_type_id INT(10)
然后有一个单独的表格:
PaymentTypes
id auto_increment pk
name VARCHAR(255)
如果您使用的是InnoDB,那么您会将外键放在t他列的payment_type。
要查询的付款方式,只需连接表:
SELECT c.Name, pt.Name as 'Payment Type'
FROM Customer c
LEFT JOIN PaymentTypes pt ON pt.id = c.payment_type_id
这是更好的选择之一,因为它允许支付类型的最新加法以后。
相关问题
- 1. 只允许在一个QTableWidget的列值
- 2. 如何设置has_many/belongs_to关联,以便只允许一个组合?
- 3. 只允许1个逗号和2个小数点后
- 4. 如何设置jFormattedTextField,使它只允许2个数字?
- 5. jqGrid只允许1个排序方向
- 6. 一次只允许在datagridview中的2个重复值C#?
- 7. jquery - 同时只允许2个职位
- 8. 只允许2个小数点
- 9. 只允许检查2个复选框
- 10. 如何允许只允许1个值使用Firebase安全规则编写
- 11. 如何在datagridview中只允许2个十进制值?
- 12. 只允许列出值中的一个的类型Script
- 13. 添加列集不允许值设置
- 14. 如何设置PFQuery.wherekey以允许多个equalTo值?
- 15. 只允许从1个脚本/位置访问文件
- 16. mongodb错误验证设置:只允许一个位置参数
- 17. 如何设置jformattedtextfield只取2个值?
- 18. 只允许一个python脚本的1个实例
- 19. 只允许两个数字以JavaScript
- 20. JSON只允许一个顶级值?
- 21. Javascript:验证字段(在表单上),以便它只能包含字母,允许使用1个连字符,允许使用1个撇号
- 22. 如何将AutoCompleteExtender设置为只允许自动完成列表中的值?
- 23. 允许参数有多个值?例如值1 ||值2(C#,灯开关)
- 24. 只允许一个脚落
- 25. 只允许8个字符
- 26. 设置flash crossdomain.xml只允许SSL连接?
- 27. firebase只允许设置某些属性
- 28. 设置一个表格只允许.edu电子邮件地址
- 29. 只允许如果设置一个已经Commander.js
- 30. 只允许在TextBox中使用1个字符
您可以使用'ENUM'。 – 1000111
为了简单和效率的缘故,您可以使用布尔值来表示一个或另一个,因为只有2个选项。 –
@ php_coder_3809625 while true(pun not not:p),这可能会导致在此代码库的后续版本中出现一些巨大的扩展问题。尽管Marc可能没有计划将其扩展到其他支付处理器,但如果这个计划起飞了,他肯定希望能够添加不同于2的支付类型,并且应该计划可扩展性(在合理范围内) – Pachonk