2016-11-09 1 views
0

ヘルプが必要です。このスクリプトはPostgreSQLにありますようお願いします。私はそれをMySQLに変換したいのですが、どうしたらいいですか?感謝する。CONSTRAINTを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

詳細を確認してください。 ** **問題は何ですか?あなたはどのように変換するのかわからないフィールド/定義のどれですか? – Dekel

+0

CONSTRAINTが主な焦点ですが、他は少し身近なようです。ありがとう。 – kehinde

+0

postgresqlの制約をmysqlにどのように翻訳するか尋ねます – Dekel

答えて

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
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))) 

を試してみて、これはPostgresのための非常に良いテーブル設計ではありません。あなたが問題を抱えているというこれらの拘束は、貧乏人のpostgisの優れた実装であるGeography typeです。

上記の制約は、Lat、lng列に入力された値が地理緯度と経度の有効範囲内にあることを保証します。 (地理タイプはデフォルトでそれを行い、他の多くの機能を提供します)。

mysqlで最も簡単なことは、制約なしでテーブルを作成することです。第二に、mysql geometryタイプを使用することもできますが、データの検証は自動的に行われません。

postgresql表の制約を再現する3番目のオプションは、BEFORE INSERTトリガーを使用することです。その場合は、制約なしでテーブルを追加し、挿入する前にデータを検証するトリガを作成します。

関連する問題