2013-08-17 57 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