2013-08-17 82 views
2

我想將MySQL數據庫轉換爲PostgreSQL。Mysql空ENUM到postgresql ENUM

在MySQL中,ENUM數據類型允許默認爲空字段,這似乎不適用於PostgreSQL。因此,我不能使用PostgreSQL從VARCHAR轉換到ENUM,因爲我的數據庫中有很多PgSQL不允許的空字段。

我該怎麼辦?允許NULL並將空字段設置爲NULL?在創建類型時,在PostgreSQL的ENUM中添加一個空值(類似於ENUM('A','B','C',''))?停止使用這種醜陋和不協調的ENUM數據類型(並且使用varchar上的約束或其他表和外鍵)?

謝謝:)

user1527491

回答

4

如果你確實想在枚舉空字符串值,你應該將它們創建類型時添加到枚舉,是的。任何將空字符串接受到不明確允許空字符串的數據庫都是錯誤的,如果您的應用程序依賴於它,那也是錯誤的:)

如果這個想法是它的意思是「未知」,那麼使用NULL也是一個不錯的選擇 - 從純粹的模型角度來看,可能是更清潔的一個。

歸結爲一些經典問題,即一些數據庫和系統認爲null和空字符串是相同的東西,當它們顯然是不同的值時。

+0

謝謝:)。似乎現在對我很清楚。 – user1527491