問題タブ [alter-table]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - SQL Server で列のデータ型を変更するにはどうすればよいですか?
列を から に変更しようとしてvarchar(50)
いnvarchar(200)
ます。このテーブルを変更する SQL コマンドは何ですか?
mysql - InnoDB の ALTER TABLE 用に MySQL を最適化する
近いうちに、本番データベースのスキーマを変更する必要があります。この作業のためにダウンタイムを最小限に抑える必要がありますが、ALTER TABLE ステートメントはかなりの時間実行されます。最大のテーブルには 1 億 5000 万のレコードがあり、最大のテーブル ファイルは 50G です。すべてのテーブルは InnoDB であり、(テーブルごとのファイルではなく) 1 つのビッグ データ ファイルとしてセットアップされました。8 コア マシン、16G メモリ、および RAID10 構成で MySQL 5.0.46 を実行しています。
私は MySQL のチューニングの経験がありますが、これは通常、複数のクライアントからの読み取りまたは書き込みに焦点を当てています。この件に関してインターネット上には多くの情報がありますが、MySQL サーバーを (一時的に) チューニングして InnoDB テーブルの ALTER TABLE や INSERT INTO を高速化するためのベスト プラクティスに関する情報はほとんどないようです。 . SELECT FROM (おそらく ALTER TABLE の代わりにこれを使用して、処理を少し高速化する機会を増やします)。
私たちが計画しているスキーマの変更は、すべてのテーブルに整数列を追加し、それを現在の主キーではなく主キーにすることです。「古い」列も保持する必要があるため、既存の値を上書きすることはできません。
このタスクを可能な限り迅速に実行するには、どのような設定が理想的ですか?
sql-server - 一時テーブルを作成する前に、一時テーブルが存在するかどうかを確認し、存在する場合は削除します
次のコードを使用して、一時テーブルが存在するかどうかを確認し、存在する場合はテーブルを削除してから再度作成しています。列を変更しない限り、正常に動作します。後で列を追加すると、「無効な列」というエラーが表示されます。私が間違っていることを教えてください。
sql-server - プログラムで決定された定数の DEFAULT 値を持つ ALTER TABLE
別のテーブル (部門) の主キーの既定の制約を使用して、列 (MSSQL 2005) をテーブル (従業員) に追加しようとしています。次に、この列をそのテーブルの FK にします。基本的に、DepartmentID が指定されていない場合、これにより、部門名に基づいて新しい従業員が基本部門に割り当てられます。
これは動作しません:
Production、Test、Development データベースは同期が取れなくなり、DepartmentName = 'RocketScience' の DepartmentID は同じである場合とそうでない場合があるため、単に DEFAULT (somenumber) とは言いたくありません。どの方法で問題に取り組んでも、「変数は ALTER TABLE ステートメントでは許可されていません」というメッセージが表示され続けます。
これを行う正しい方法は何ですか?selectステートメントもネストしてみましたが、「このコンテキストではサブクエリは許可されていません。スカラー式のみが許可されています。」
さらに、 {ALTER null} {Update values} {ALTER not null}の手順を実行
する代わりに、1 つのステートメントで列の値を入力できるのは本当に素晴らしいことです。WITH VALUES コマンドについて何か読んだことがありますが、それを機能させることができませんでした。ありがとう!!!
sql-server - 列の変更: null から非 null へ
Null 許容の整数列がいくつかあるテーブルがあります。これはいくつかの理由で望ましくないため、すべての null を 0 に更新してから、これらの列を に設定しようとしていますNOT NULL
。null を に変更する以外に0
、データを保持する必要があります。
列を変更するための特定の SQL 構文を探しています (それを呼び出しますColumnA
) を " not null
" に変更します。null を含まないようにデータが更新されているとします。
SQL サーバー 2000を使用します。
sql - T-SQL の既存のチェック制約から "not for replication" オプションを削除できますか?
「レプリケーション用ではない」オプションを使用したチェック制約 (複数の列を含む) がデータベース テーブルに追加されたとします (例: 「alter table table_name add constraint constraint_name check not for replication (constraint_expression)」)。
列から「レプリケーション用ではない」を削除する構文を見つけましたが、上記のように既存のチェック制約は削除しませんでした。
チェック制約を削除/再作成する以外に、チェック制約から「複製不可」を削除する方法はありますか?
sql - 既存の値に影響を与えずに列の属性を変更する方法は?
一言で言えば、オラクルデータベースでは、現在の値に影響を与えずに、varchar2(8) である列 varchar2(16) を作成したいと考えています。私はすでにこれを試しましたが、奇妙なことをします。
私が試したクエリは、alter table SOME_TABLE modify (SOME_COL varchar2(16)); でした。しかし、上記のクエリを実行すると、テーブルに既に存在する値 (すべてではないものもあります) に '\0' が追加されます。
それで、私がやりたいことをする正しい方法は何ですか?
mysql - 存在しない場合はmysqlテーブルに列を追加します
私の研究と実験ではまだ答えが得られていないので、何らかの助けを期待しています.
以前のバージョンでは追加したい列がなかったアプリケーションのインストール ファイルを変更しています。列を手動で追加したくはありませんが、インストール ファイルに、新しい列がテーブルにまだ存在しない場合にのみ追加します。
テーブルは次のように作成されます。
以下を create table ステートメントの下に追加すると、列が既に存在する (そしておそらくデータが取り込まれている) 場合に何が起こるかわかりません。
そこで、どこかで見つけた以下を試してみました。これは機能していないようですが、適切に使用したかどうかは完全にはわかりません。
誰かがこれを行う良い方法を持っていますか?