問題タブ [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 - テーブル スキーマを変更する際のエラー処理とデータの整合性
大規模なデータ セットを持つ顧客が数人いて、アップグレード手順中にさまざまなテーブルのスキーマを変更する必要があります (いくつかの列を追加し、他の名前を変更し、時々データ型を変更しますが、それはまれです)。
以前は、新しいスキーマで一時テーブルを使用してから、元のスキーマを削除して一時テーブルの名前を変更していましたが、ALTER table ...
代わりに使用することで劇的にスピードアップしたいと考えています。
私の質問は、どのようなデータの整合性とエラー処理の問題を考慮する必要があるかということです。テーブルへのすべての変更をトランザクションに含める必要がありますか (そうであれば、どのように?)、それとも DBMS は ALTER 操作に対して原子性と整合性を保証しますか?
アップグレードを開始する前にデータをバックアップすることを強くお勧めします。
SQLServer 2005 と Oracle をターゲットにする必要がありますが、異なるアプローチが必要な場合は、明らかに条件付きコードを追加できます。
sql-server - 「altertableswitchpartition」がサイレントに失敗するのはなぜですか?
SQL Server 2005(Ent、Ed。、32ビット、SP2)に、パーティションを構築するためのパーティション化されたファクトテーブルがあります(ファクトテーブルはスナップショットタイプです)。このプロセスでは、データを別のテーブルに作成し、適切なインデックスを適用してから、パーティションをテーブルに切り替えます。
これは過去に機能しました
テーブル構造は同一であり、コマンドはエラーを発生させません。インデックスの1つを削除すると、それについて不平を言うエラーが発生します。
何らかの理由で、パーティションを切り替えるコマンドはエラーを発生させませんが、サイレントに失敗します。なぜそうなるのかわかりません。
例えば、
SSMSレポート' Command (s) completed successfully.
'を使用して実行しますが、などを実行するとselect count (*) from fact.RIAgedDebt
0行が返されます。ソーステーブルwk.FactRIAgedDebt
にはまだデータが含まれています。
- 既知のバグですか?
- 私は明らかに間違ったことをしていますか?
- 誰かがこの現象を見たことがありますか?
sql - 初期値(デフォルトではない)で新しい列を追加する最良の方法は?
初期値を持つ MS SQL 2005 データベースに新しい列を追加する必要があります。ただし、この列にデフォルトの制約を自動的に作成したくありません。列を追加した時点では、デフォルト/初期値は正しいですが、これは時間の経過とともに変化する可能性があります。したがって、テーブルへの今後のアクセスでは、デフォルトを受け入れる代わりに値を指定する必要があります。
私が思いつくことができる最高のものは次のとおりです。
これは、大規模なテーブル (100,000 から 1,000,000 レコード) では少し効率が悪いようです。
デフォルトで列を追加してから、デフォルトの制約を削除して実験しました。ただし、デフォルトの制約の名前が何であるかはわかりません。sysobjects にアクセスせず、データベース固有の知識を入れたくありません。
もっと良い方法があるはずです。
sql - ID を既存の列に追加する
テーブルの主キーを ID 列に変更する必要がありますが、テーブルには既に多数の行があります。
ID をクリーンアップして ID が 1 から連続していることを確認するスクリプトがあり、テスト データベースで正常に動作します。
ID プロパティを持つように列を変更する SQL コマンドは何ですか?
oracle - OracleテーブルにLOBを追加することの何が問題になっていますか?
(Oracle 10で)新しいCLOB列を追加してテーブルを変更しようとしていますが、失敗します。ORA-01735エラーが発生します。問題は、グーグルで検索しても特に何が悪いのかわからないので、念のためここで聞いてみようと思いました。
とにかく私のクエリは:
そして、次のエラーが発生します。
何か案は?
ありがとう。
sqlite - sqlite 2 データベース テーブルに列を追加する方法
データとインデックスが関連付けられている既存の sqlite 2 データベース テーブルに追加の列を追加するにはどうすればよいですか。
そのためのalter table SQLはsqlite2では利用できないようですか?
mysql - MySQL テーブルの列のサイズを変更するにはどうすればよいですか?
テーブルを作成しましたが、誤ってvarchar
length を300
ではなくas にし65353
ました。どうすれば修正できますか?
例をいただければ幸いです。
sql - SQL のテーブルを変更してから値を変更する
作業中の SQL スクリプトがあり、列を作成 (または編集) してからその新しい列を変更しようとすると、問題が発生します。
例えば:
ここで、BEGIN/END ブロックがこれら 2 つの項目を分離すると考えましたが、「列名 'ColumnThree' が無効です」というエラーが表示されます。これを実行しようとすると。なんで?最初の BEGIN/END でその ColumnThree などを設定して、その列名が存在しない場合に IF(EXISTS で UPDATE ステートメントが実行されないようにする必要があります。
このようなことを行う正しい方法は何ですか? (これが必要な場合、いくつかの同様のシナリオがあるようです)。
linq-to-sql - Linq を使用してデータベース テーブルを変更することは可能ですか?
アクセス データベース内のテーブルの列をプログラムで削除しようとしましたが、それができないことがわかりました。それはまったく可能ですか?linq to sql でできないことについて明確な考えがないように思えます。何か案は?
sql-server - 巨大なテーブルのPK列のデータ型を変更する
int
PK列(これは)の容量が不足したので、IDENTITY
これを実行したいと思いますbigint
が、単純なALTER TABLE
テーブルではその大きなテーブルを処理できないようです。だから私の質問は、実際の値を維持したままPK列のタイプを変更するにはどうすればよいですか?また、参照テーブルも変更する必要がありますか?