[解決済み] PostgreSQLでカラムが存在しない場合、どのように追加しますか?
2022-04-16 22:56:39
質問
質問は簡単です。カラムの追加方法
x
テーブルへ
y
ただし、以下の場合に限る。
x
カラムが存在しない?唯一の解決策を見つけた
これ
カラムが存在するかどうかを確認する方法。
SELECT column_name
FROM information_schema.columns
WHERE table_name='x' and column_name='y';
解決方法は?
ここでは、"DO"ステートメントを使用した簡単なバージョンを紹介します。
DO $$
BEGIN
BEGIN
ALTER TABLE <table_name> ADD COLUMN <column_name> <column_type>;
EXCEPTION
WHEN duplicate_column THEN RAISE NOTICE 'column <column_name> already exists in <table_name>.';
END;
END;
$$
しかし、これは自己完結型のクエリであり、カラムがすでに存在する場合にのみメッセージを出力し、存在しない場合は追加し、その他のエラー (無効なデータ型など) では失敗し続けます。
もし、外部ソースからのランダムな文字列であれば、これらの方法のどれを行うこともお勧めしません。 どのような方法(クライアントサイドまたはサーバーサイドの動的な文字列をクエリとして実行)を使用する場合でも、SQLインジェクション攻撃を受ける可能性があり、災いのもととなります。
関連
-
[解決済み] psql: FATAL: データベース "<user>" が存在しない
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] PostgreSQLのユーザーパスワードを変更する方法を教えてください。
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?
-
[解決済み] PostgreSQLで重複して更新された場合の挿入?
-
[解決済み] postgres の主キー配列が同期しなくなったときにリセットする方法は?
-
[解決済み] PostgreSQL で "use database_name" コマンドを使用する。
-
[解決済み】Mac OS XでPostgreSQLサーバーを起動するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PostgreSQLのJSONBのマッチングと交差の問題について
-
Postgresqlのユーザーログインエラーの回数を制限するサンプルコード
-
pgAdmin for postgreSQLでサーバーのデータをバックアップする方法
-
PostgreSqlのhash_code関数の使用法
-
サーバーに接続できませんでした:接続拒否(0x0000274D/10061)
-
[解決済み] 指定されたスキーマにテーブルが存在するかどうかを確認する方法
-
[解決済み] リレーションシップのパーミッションが拒否されました
-
[解決済み] Postgres で、あるデータベースから別のデータベースにテーブルをコピーする
-
[解決済み] PostgreSQLのINSERT ON CONFLICT UPDATE(upsert)は除外された値をすべて使用します。
-
[解決済み] PostgreSQL: ロールのログインが許可されていない