如何将CONSTRAINT从PostgreSQL转换为MySQL?

时间:2016-11-09 14:22:14

标签: mysql sql postgresql converters

此脚本位于PostgreSQL中。我想将它转换为MySQL,我该如何完成它?

CREATE TABLE language_history (
    pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    active boolean,
    jsondata varchar(255),
    polymorphic_type varchar(20),
    id varchar(255),
    name varchar(255),
    description varchar(255),
    markup_description varchar(255),
    latitude double precision,
    longitude double precision,
    version int NOT NULL,
    CONSTRAINT language_history_latitude_check CHECK (((((-90))::double precision <= latitude) AND (latitude <= (90)::double precision))),         
    CONSTRAINT language_history_longitude_check CHECK (((((-180))::double precision <= longitude) AND (longitude <= (180)::double precision)))
);

2 个答案:

答案 0 :(得分:1)

试试这个

CREATE TABLE language_history (
    pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    active bool,
    jsondata varchar(255),
    polymorphic_type varchar(20),
    id varchar(255),
    name varchar(255),
    description varchar(255),
    markup_description varchar(255),
    latitude double precision,
    longitude double precision,
    version int NOT NULL
) TYPE=MyISAM;

答案 1 :(得分:1)

GHCi> nicerComposed ["alice","bob","david"]
["ecila","divad"]

首先,这不是一个非常好的postgres表设计。你遇到麻烦的这些限制是穷人对postgis的优秀Geography type的实施。

上述约束的作用是确保在lat,lng列中输入的值在地理纬度和经度的有效范围内。 (地理类型默认为您执行此操作并为您提供许多其他功能)。

在mysql中最简单的方法是创建没有约束的表。其次,您可以使用mysql geometry类型,但它不会自动为您提供数据验证。

将在postgresql表中重现约束的第三个选项是使用BEFORE INSERT触发器。在这种情况下,添加没有约束的表,然后在插入之前编写触发器以验证数据。