是否可以設置列,使其只能有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