• ベストアンサー

フィールドの削除でつまずいています。

フィールドの削除でつまずいています。 Aマシン VineLinux Bマシン RedHat9 同じデータを使っています。データベースもPostgreSQLです。 Aで、alter table test_table drop column test_field;でエラーが発生し Bでは何のエラーも無く実行できました。 考えられる原因は何でしょうか? ちなみに、 update test_table set test_field = null;としています。 SQLの知識が乏しいので、基礎的なことを忘れているかもしれません。

質問者が選んだベストアンサー

  • ベストアンサー
  • rhl
  • ベストアンサー率37% (42/111)
回答No.2

ほかのテーブルから参照されているとかはないですか?

その他の回答 (1)

  • coco1
  • ベストアンサー率25% (323/1260)
回答No.1

どういうエラーなのかわかりませんか?

関連するQ&A

  • NOT NULL 制約の削除

    MSSQL(SQLServer2000)にて、NOT NULLの列制約をはずすにはどうしたらよいのでしょうか。 ALTER TABLE <テーブル名> ALTER COLUMN <列名> DROP NOT NULL をやってみたのですが、構文エラーになってしまいます。 よろしくお願いします。

  • PostgreSQLの「not null」制約の追加

    こんにちは。いつもお世話になります。 PostgreSQLのversion7.2.8で、「not null」制約の追加、削除の方法をおたずねします。よろしくお願いします。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET NOT NULL; で試したところ、syntaxエラー(構文エラー)で失敗。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 DROP NOT NULL; で試してみても、同じくsyntaxエラーです。 version7.2.8が原因でしょうか? また、version7.2.8でも「not null」制約の追加、削除が できる他の方法はありますでしょうか? テーブルを作り直さずに、 既存のテーブルのカラムへの制約の追加、削除をしようとしています。 よろしくお願いします。

  • カラムの削除が出来ません

    Microsoft SQL2000を使用しているのですが あるテーブル(table_A)のカラム(column_A)を削除したいので 以下のようなクエリ及び、GUIでの削除を実行しました。 ----------------実行クエリ----------------------- ALTER TABLE dbo.table_A DROP COLUMN column_A GO ------------------------------------------------- ところがどちらの削除を方法を実行しても以下のようなエラーメッセージが返されます。 -----------------エラーメッセージ---------------- テーブル 'table_A' - テーブルを修正できません。 ODBC エラー : [Microsoft][ODBC SQL Server Driver][SQL Server] 行 2: 'column_A' の近くに無効な構文があります。 ------------------------------------------------- カラム名の変更などはできるのですが どうしても削除だけ出来ません。 なお、このカラムは主キーとしての設定や 他のテーブルへの外部キーとしての設定を行っていません。 型は[varchar] (20) COLLATE Japanese_BIN NULLです。 どなたか対処方法をご存知の方がおられましたら ご回答よろしくお願いします。 それでは失礼します

  • Oracle テーブルの列削除

    タイトルの通りテーブル(test)の列(retu)を削除したいのですが・・・ Sql*pLUS画面 SQL> alter table test drop(retu); ←この用に入力 alter table test drop(retu) * エラー行: 1: エラーが発生しました。 ORA-00905: キーワードがありません。 となってしまい列を削除できません。 なにか構文の間違いでしょうか?

  • Oracleのテーブルのフィールドを削除したい

    「総務部.受付ID-1」というフィールドを削除したいと思い以下を実行しました。 alter table VISITOR_SCHDULE drop 総務部.受付ID-1 しかしキーワードがありませんというエラーが表示されてしまいます。 フィールド名に.(ドット)と-(ハイフン)が使用されているからなのでしょうか? 前任者より引継ぎましたので、なぜこのようなフィールド名にしたかは不明です。

  • フィールドをデフォルト0にする

    フィールドをデフォルト0にする方法が知りたいです。 以下のようなサンプルがります。 drop table test_a; create table test_a ( name varchar2(10), a number(1), b number(1), c number(1) ) insert into test_a (name) values ('AAA'); insert into test_a (name,a) values ('BBB', NULL); insert into test_a (name,a,b) values ('CCC', NULL,NULL); select * from test_a; この状態では、a,b,cはNULLですが、a,b,cの値をデフォルト値で0にしたい為、 update test_a set a = 0, b = 0, c = 0; として、データを直して、次回から insert into test_a (name) values ('DDD'); とすると、nameがDDDの時もa,b,cが0となるようにテーブル定義を変えたいのですが 既存のテーブルをそのままで、途中から変更する方法が知りたいです。

  • SQL Server(MSDE2000) : ALTER TABLE

    SQL Server(MSDE2000) : ALTER TABLE した項目に対し、直後に UPDATE で値をセットできない 既存のテーブルを仕様変更するため、列を追加し、初期値で埋める SQL 文を書こうとしていますが、うまく動かず、エラーとなってしまい、原因が判らず困っています。 サンプル SQL 文: ------ CREATE TABLE TEST_TABLE ( TEST_FIELD1 SMALLINT, TEST_FIELD2 SMALLINT) INSERT INTO TEST_TABLE VALUES( 1, 2 ) ALTER TABLE TEST_TABLE ADD TEST_FIELD3 SMALLINT UPDATE TEST_TABLE SET TEST_FIELD3 = 3 ------ ※テスト毎に、必ず DROP TABLE TEST_TABLE されている事が前提です。 上記 SQL 文のうち、1行目~3行目までを抜粋して実行すると、ちゃんと CREATE TABLE され、INSERT され、ALTER TABLE される事を確認しました。 ところが、4行目までを一気に実行しようとすると、 ------ SQL実行中に以下のエラーが発生しました。 エラーコード:207 [Microsoft][ODBC SQL Server Driver][SQL Server]列名 'TEST_FIELD3' は無効です。 SQLステータス:S0022 ------ となってしまい、UPDATE で初期値を埋める事ができません。 しかも、UPDATE に失敗するどころか、2行目の INSERT から以降が結果に反映されなくなるという状況に陥ってしまいます。 また、既存のテーブルの仕様変更が目的なので、その状況に近づけるために、まず、 ------ CREATE TABLE TEST_TABLE ( TEST_FIELD1 SMALLINT, TEST_FIELD2 SMALLINT) INSERT INTO TEST_TABLE VALUES( 1, 2 ) ------ を実行し、既存のテーブル(とレコード内容)が存在する状態を作り出された事を、ツール等で確認してから、 ------ ALTER TABLE TEST_TABLE ADD TEST_FIELD3 SMALLINT UPDATE TEST_TABLE SET TEST_FIELD3 = 3 ------ の2行を実行してみると、やはり UPDATE は失敗し、前述と同じエラーが発生します。 またこの場合、ALTER TABLE の実行結果も反映されていません。(つまり、TEST_FIELD3 が列追加されていない) もちろん、ALTER TABLE だけを実行した場合には、ちゃんと列は追加されます。 その後に、UPDATE を実行すれば、ちゃんと追加列に初期値がセットされます。 どうやら、「一回の SQL 文の実行の中で、ALTER TABLE によって新設した列に対しては、UPDATE などでのアクセスはすぐにはできない」のではないか?という状況のようなのです。一回の SQL 文の実行の中において、何らかのトランザクション動作っぽい挙動を感じます。 つまり、ALTER TABLE で追加された列は、その時点ではまだ完全にシステムに認知されていないため、直後の UPDATE 文で認識できずに失敗するのではないか?と。そして、そこでのエラー発生が、ロールバック的に実行した処理をキャンセルしてしまうため、結果として、ALTER TABLE が実行されなかった事になったり、INSERT が実行されなかった事になったりしているのではないか?と思う次第です。 考えられる回避策としては、SQL 文を別々に作成し、個別に実行すれば良いだけの事なのですが、できれば、SQL 文一つにまとめたいと考えています。 どなたか、こういった現象に対する原因・理由の説明、或いは回避策など、何か情報をお持ちの方はいらっしゃいませんでしょうか? 宜しくお願いします。

  • テーブルのフィールドにNot null制約を付けたい

    お世話になります。 既存テーブルにフィールドを追加する方法は わかっているのですが、その追加したフィールドに not null制約を付けるにはどのようなコマンドを 実行する必要があるのでしょうか。 ↓のコマンドには制約をつけるオプションはないですよね。。 ALTER TABLE テーブル名 ADD (カラム名 カラム定義) よろしくお願いします。

  • MYSQLのフィールドにユニークキーを設定する。

    すでに作ってしまったテーブルにユニークキーを付けたいと考えています。最悪の場合、新しくカラムを作っての追加でもかまわないのですが、いろいろ試してもエラーが返されてしまいます。 codeというカラムにユニークキーを設定したいのですが、 alter table テーブル名 modify unique code; alter table テーブル名 add unique code2; alter table テーブル名 modify code unique; alter table テーブル名 add code2 unique; alter table テーブル名 modify code test unique; alter table テーブル名 add code2 test unique; alter table テーブル名 modify unique code test; alter table テーブル名 add unique code2 test; alter table テーブル名 modify (code unique); alter table テーブル名 add (code2 unique); alter table テーブル名 modify (code text unique); alter table テーブル名 add (code2 text unique); など、思いつく限り試し、グーグルで調べる限り調べたのですが、出てきたものをためしてもダメでした。 テーブルを作成した後、カラムにユニークキーを設定した経験のある方、どのように変更をしたのでしょうか?

    • ベストアンサー
    • MySQL
  • SQLでフィールドの順番を変更したい

    お世話になっております。 ORACLEを使用しております。 既存のテーブルに新しいフィールドをSQL文にて ALTER TABLE TEST_MST ADD TEST_CD VARCHAR2(2); と言う風に、SQL*PLUSにて追加いたしました。 これを参照しますと、 追加したフィールドがテーブルの一番最後のフィールドに 追加されているのですが、 フィールドの順番を変更したいと考えております。 SQL文にて何か方法はございませんでしょうか。 ご返答を宜しくお願い致します。