2016-07-17 10 views
0

MySQL ALTER TABLEに関するほとんどの記事を読みましたが、私の問題の答えが見つかりません。デフォルトで1のMySQL Alterテーブル追加カラム

テーブルに新しい列を追加するスクリプトがありますが、これは問題なく動作しますが、新しい列の既定値が設定されていないという問題があります。私は何かが欠けていますか:

ALTER TABLE Hist ADD S1 VARCHAR(5) DEFAULT '1', ADD comments_S1 TEXT 

上記は私が使用しているコードです。

任意のアイデアの

お時間をいただきありがとうございます。あなたはあなたの構文からキーワードCOLUMNが欠落している

ALTER TABLE table_name ADD COLUMN col type DEFAULT 'default'; 

+0

NULLフィールドを変更しますアプリケーションコードで何かが空の文字列 – num8er

答えて

0

私はMySQLのテーブルに列を追加するための構文があると信じています。以下を試してください。

ALTER TABLE Hist 
ADD S1 VARCHAR(5) DEFAULT '1', 
ADD comments_S1 TEXT; 
+0

完璧にS1のフィールドを設定しますように思えます。どうもありがとう。 – DCJones

1

悲しいことに、default値は新しい行にのみ使用されます。古い行はNULLになります。

update hist 
    set s1 = '1'; 

これは本当によくdocumented MySQLではありませんが、それが示唆ソートは次のとおりです。だから、単にALTER TABLE後にそれらを更新します。 。

サーバが唯一のテーブルの.frmファイルを変更する必要があるため、専用テーブルのメタデータではなく、テーブルのデータを変更する変更は即時 あり、 は、テーブルの内容には触れていません。以下の変更は、このようにすることができる速い変更 です:

。 。 。 - カラムのデフォルト値を変更する(NDBテーブルを除く)。

カラムを追加するにテーブルコピーが必要です。しかし、古い値は影響を受けません。

0

あなたのアプリケーションコードには、S1フィールドが空の文字列に設定されているようです。

ALTER TABLE Hist 
ADD S1 VARCHAR(5) DEFAULT '1' NOT NULL, 
ADD comments_S1 TEXT; 

それが空の状態からS1を防ぎ、自動的に'1'

関連する問題