タグ付けされた質問 「alter-table」

「ALTER TABLE」は、データベーステーブルへのスキーマの変更(既存のテーブルからの列の追加、削除、変更)を可能にするSQLステートメントです。

19
MySQL列をAUTO_INCREMENTに変更します
AUTO_INCREMENT事後、テーブルを変更して主キー列を作成しようとしています。次のSQLを試しましたが、構文エラーの通知を受けました。 ALTER TABLE document ALTER COLUMN document_id AUTO_INCREMENT 私は何か間違ったことをしていますか、これは不可能ですか? + -------------------- + | VERSION()| + -------------------- + | 5.0.75-0ubuntu10.2 | + -------------------- +
194 sql  mysql  alter-table 

6
列を変更し、デフォルトの制約を追加
テーブルがあり、列の1つは、datetimeタイプの「日付」です。その列にデフォルトの制約を追加することにしました Alter table TableName alter column dbo.TableName.Date default getutcdate() しかし、これは私にエラーを与えます: 「。」付近の構文が正しくありません 誰かがここで明らかに間違っている何かを見ていますか?それは私が見逃しています(カラムのより良い名前を除いて)

4
SQL Serverの列追加ステートメントで名前付きの既定の制約を作成できますか?
SQL Serverでは、テーブルに新しい列があります。 ALTER TABLE t_tableName ADD newColumn NOT NULL デフォルトの制約を指定せずにNOT NULLを指定しているため、これは失敗します。テーブルにはデフォルトの制約があってはなりません。 これを回避するために、デフォルトの制約でテーブルを作成してから削除することができます。 ただし、デフォルトの制約をこのステートメントの一部として指定するように指定する方法はないようです。そのため、それを取り除く唯一の方法は、sys.default_constraintsでそれを検索するストアドプロシージャを用意することです。テーブル。 これは、頻繁に発生する可能性が高い操作の場合、少し面倒/冗長です。誰にもこれのためのより良い解決策がありますか?


7
MySQLのENUMタイプの列にメンバーを追加するにはどうすればよいですか?
MySQLリファレンスマニュアルには、これを行う方法の明確な例はありません。 国を追加する必要がある国名のENUMタイプの列があります。これを達成するための正しいMySQL構文は何ですか? これが私の試みです: ALTER TABLE carmake CHANGE country country ENUM('Sweden','Malaysia'); 私が得るエラーは: ERROR 1265 (01000): Data truncated for column 'country' at row 1. country列には、上記の文ではENUM型のカラムです。 作成テーブル出力を表示: mysql> SHOW CREATE TABLE carmake; +---------+---------------------------------------------------------------------+ | Table | Create Table +---------+---------------------------------------------------------------------+ | carmake | CREATE TABLE `carmake` ( `carmake_id` tinyint(4) NOT NULL AUTO_INCREMENT, `name` tinytext, …
157 mysql  enums  alter-table 

3
MySQLの列定義を変更する方法は?
testというmySQLテーブルがあります。 create table test( locationExpect varchar(120) NOT NULL; ); locationExpect列を次のように変更します。 create table test( locationExpect varchar(120); ); どうすればそれをすばやく行うことができますか?
156 mysql  alter-table 

9
Postgresql-varcharカラムのサイズをより短い長さに変更します
ALTER TABLE非常に大きなテーブル(約3,000万行)に対するコマンドについて質問があります。その列の1つはです。varchar(255)これをにサイズ変更したいと考えていvarchar(40)ます。基本的に、次のコマンドを実行して列を変更します。 ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40); プロセスが非常に長くても問題はありませんが、ALTER TABLEコマンドの実行中にテーブルが読みにくくなったようです。もっと賢い方法はありますか?たぶん、新しい列を追加し、古い列から値をコピーし、古い列をドロップして、最後に新しい列の名前を変更しますか? 手がかりは大歓迎です!前もって感謝します、 注:PostgreSQL 9.0を使用しています。




19
テーブルをロックせずにALTER TABLE?
MySQLでALTER TABLEステートメントを実行すると、ステートメントの期間中、テーブル全体が読み取りロックされます(同時読み取りは許可されますが、同時書き込みは禁止されます)。大きなテーブルの場合、INSERTまたはUPDATEステートメントが長時間ブロックされる可能性があります。テーブルがプロセス全体でまだ更新可能であるような方法で列を追加するような「ホットオルター」を行う方法はありますか? ほとんどの場合、MySQLのソリューションに興味がありますが、MySQLで解決できない場合は、他のRDBMSにも興味があります。 明確にするために、私の目的は、追加のテーブル列を必要とする新機能が本番環境にプッシュされたときのダウンタイムを回避することです。すべてのデータベーススキーマは時間の経過とともに変化しますが、それは現実です。これらの変更が必然的にダウンタイムにつながることを受け入れる必要がある理由はわかりません。それはただ弱いです。
107 sql  mysql  ddl  alter-table 

4
テーブルをロックせずに巨大なMySQLプロダクションテーブルにインデックスを作成する
約500万行のMySQLテーブルにインデックスを作成する必要があります。これはプロダクションテーブルであり、CREATE INDEXステートメントを実行すると、すべての完全なブロックを恐れます... 挿入と選択をブロックせずにそのインデックスを作成する方法はありますか? 停止してインデックスを作成し、システムを再起動する必要はありません。


14
SQLiteに存在しない場合はALTERTABLE ADD COLUMN
最近、既存のSQLiteデータベーステーブルのいくつかに列を追加する必要がありました。これはで行うことができますALTER TABLE ADD COLUMN。もちろん、テーブルがすでに変更されている場合は、そのままにしておきます。残念ながら、SQLiteはのIF NOT EXISTS句をサポートしていませんALTER TABLE。 現在の回避策は、このPythonの例のように(ただしC ++で)、ALTER TABLEステートメントを実行し、「列名の重複」エラーを無視することです。 ただし、データベーススキーマを設定するための通常のアプローチはCREATE TABLE IF NOT EXISTS、CREATE INDEX IF NOT EXISTSステートメントを含む.sqlスクリプトを作成することです。これは、sqlite3_execまたはsqlite3コマンドラインツールを使用して実行できます。ALTER TABLEこれらのスクリプトファイルを挿入することはできません。そのステートメントが失敗すると、それ以降は実行されないためです。 テーブル定義を1つの場所に置き、.sqlファイルと.cppファイルに分割したくない。ALTER TABLE ADD COLUMN IF NOT EXISTS純粋なSQLiteSQLで回避策を書く方法はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.