• 締切済み

SQLでテーブル名称を変えた場合の制約

icqの回答

  • icq
  • ベストアンサー率20% (8/40)
回答No.1

たしか,自動的にリネームされたはずです. 不安なら簡単なテーブルを作って試されてはどうでしょうか?

関連するQ&A

  • SQL 2000 にあった一覧のエクスポートはSQL 2005では無いですか?

    SQL 2000 Server のEnterprise Managerにある一覧のエクスポートボタンが、SQL 2005 ServerのManagement Studioにありません、何か良い手はあるのでしょうか。 やりたいことはテーブル、ストアドプロシージャ、ビューの一覧をエクスポートしたいです。

  • T-SQLで一時テーブルの名前を毎回変更できるストアドを作りたい

    お世話になります。 初歩的な質問で恐縮ですがご教示いただければ幸いです。 T-SQLでグローバル一時テーブルの名前を毎回変更できるストアドを作り、Access2003アプリから実行させる予定です。 ストアドに、CREATE TABLE [dbo].[@tablename]のように書き、 ストアド実行時に@tablenameの値を ##ABC のように入力したのですが、テーブルはtempdbではなく、しかもテーブル名は@tablenameでテーブルが作成されてしまいます。 CREATE TABLE [dbo].@tablename のように[]をとると ストアド自体を作成できずエラーになってしまいます。 宜しくお願いします。 create PROCEDURE [dbo].[ストアドプロシージャー名] (@tablename nvarchar(255)) AS BEGIN from SET NOCOUNT ON; CREATE TABLE [dbo].[@tablename] <以下省略>

  • SQL:テーブルの縦を一つにまとめたい

    テーブル1からテーブル2のように、同じ要素(A)に対応する要素(A01・A02)を一つのカラムにまとめたいと考えています。 SQLでこうしたことは可能でしょうか? テーブル1 要素 | 対応する要素 ----------------- A | A01 A | A02 A | A03 B | B01 B | B02 C | C01 テーブル2 要素 | 対応する要素 ----------------- A | A01/A02/A03 B | B01/B02 C | C01

  • ○SQL Server2000○複数テーブルのデータをストアドプロシージャでCSV出力

    SQLServer2000で困っています。 定期的にデータを消す必要のあるテーブルが複数あり、 データを消すストアドプロシージャを作成しました。 しかし、これだけでは不十分で、データを消す前に データをCSV形式などで保存しておきたいと考えて います。 。。。といったことは可能なのでしょうか。 また、別の方法の方がよいといった意見もお願い します。 ツール類がインストールされていないPCなので、 Accessなどは使えません。 よろしくお願いします。

  • 4テーブル中、2テーブルが外部結合の場合のSQL

    ORACLE10gを使用しています。下記の●考えたSQLを作成しましたが、エラーにこそなりませんがレスポンスが返ってきません。 4つの参照テーブルのうち2テーブルが外部結合の場合の効率的な書き方のアドバイスをお願いします。 ●やりたいこと ・AとB(主テーブル)から該当データ抽出 ・Bの品番・得意先でCが存在すればCからコードを抽出し、Dが存在すればそのコードの名称をDから取得 ・すごく簡単に書くと下記みたいなイメージです。エラーになりますが。 SELECT A.*,B.*,C.CD1,D.CD1NM,C.CD2,D.CD2NM,・・・ FROM A,B,C,D WHERE A.KEY1 = B.KEY1 AND A.KEY2 = B.KEY2 AND B.TOK_CD = C.TOK_CD(+) AND B.HIN_CD = C.HIN_CD(+) AND C.CD1 = D.CD1(+)・・・ ●考えたSQL SELECT A.*,B.*,C.CD1,D.CD1NM,C.CD2,D.CD2NM,・・・ FROM A,B,C,D ( SELECT C.MAKER_CD, C.HIN_CD, C.CD1, C.CD2, C.CD3 FROM A,B,C WHERE A.KEY1 = 画面.指定 AND A.KEY2 = 画面.指定 AND B.MAKER_CD=C.MAKER_CD AND B.HIN_CD = C.HIN_CD )SUB_Q WHERE A.COL1 = 画面.指定 AND A.COL2 = 画面.指定 AND A.KEY1=B.KEY1 AND A.KEY2=B.KEY2 AND B.MAKER_CD = SUB_Q.MAKER_CD(+) AND B.HIN_CD = SUB_Q.HIN_CD(+) AND D.CD1(+) = SUB_Q.CD1 AND D.CD2(+) = SUB_Q.CD2 AND D.CD3(+) = SUB_Q.CD3 ○参考 Dテーブルは大分類・中分類のような分類コードとその名称を管理するテーブルでCD1のみ値が入っていればそのレコードは大分類レコードでNAMEの値は大分類名という使用方法です。実際のSQLではDテーブルに別名を付けて、D1.CD1=** AND D1.CD2 IS NULL AND D.CD3 IS NULL ・・・とひとつずつ記述しますがここでは簡略化しています。 <レイアウトイメージ> CD1|CD2|CD3|CD4|CD5|NAME ----------------------- A|NULL|NULL|NULL|NULL|電化製品 A|a|NULL|NULL|NULL|冷蔵庫

  • Oracle: PACKAGE BODY の分割

    業務用に10個以上作成したストアドプロシージャ/ファンクションをパッケージとしてまとめようとしています。保守性の観点から、PACKAGE BODY内の各ストアドを、以下のようなイメージで別々のファイルで管理したいと思っています。 が、PACKAGEとBODYの分割はできたものの、BODY内のストアドを別々にすると、エラーとなってしまいます。 そういうことはできないのでしょうか? [xxx_pkg.SQL] CREATE OR REPLACE PACKAGE xxx_pkg IS PROCEDURE procedure_a; PROCEDURE procedure_b; PROCEDURE procedure_c; END xxx_pkg; [xxx_pkg.procedure_a.SQL] PROCEDURE procedure_a IS -- aの処理 END procedure_a; [xxx_pkg.procedure_b.SQL] PROCEDURE procedure_b IS -- aの処理 END procedure_a; [xxx_pkg.procedure_c.SQL] PROCEDURE procedure_c IS -- aの処理 END procedure_c;

  • SQLの実行速度

    XMLを解析し、テーブル内を検索するシステムを 作成しているのですが、 ストアドプロシージャ内でSQL文を作成し実行するのと ASP.NET などからSQL文を作成して実行するのとでは、 実行速度に差はでるのものなのでしょうか。 ・SQLServer 2005 ・SELECT の対象テーブルは2~3つのテーブルをINNER JOIN して使う。 ・検索対象の列は実行のたびに異なる。 よろしくおねがいします。

  • 他テーブルで一致する列から名称を取得したい(SQL文)

    SQL文の作成方法が分からず困っています。 以下の実現はどのように行えばよろしいでしょうか? --------------------- テーブルA:(項目)キー番号、項目No テーブルB:(項目)キー番号、項目No1、項目No1名称、 項目No2、項目No2名称、項目No3、項目No3名称 --------------------- とします。 ここで、テーブルA、Bでキー番号が一致し、 テーブルAの項目Noで、テーブルBの項目No1~3のどれかと 一致した場合、項目名称をテーブルBより取ってきたいです。 出力する時、項目No、項目名称は1個のみ出力したいです。 項目No1~3にない場合も名称空白でそのまま出力します。 (データ例) テーブルA: 100,1 100,4 110,5 テーブルB: 100,1,項目名1,2,項目名2,3,項目名3 110,3,項目名3,4,項目名4,5,項目名5 結果: 100,1,項目名1 100,4,(空白) 110,5,項目名5

  • オラクルからのSQLServerへのデータを取込み

    お世話になります。 オラクルのテーブルからSQLServerのテーブルにデータをスケジューリングして 取り込みたいのですが、どのようにして行えば良いのでしょうか? オラクルの事しか知らないのですが、ストアドプロシージャ-のようなもので 取込みを行うのでしょうか? どなたかご存知でしたら、お教え願います。

  • Select ~ into ~ で作成した一時テーブルにプライマリキー設定

    SQLServer2005 を使用し、ストアドプロシージャを作成しています。 select ~ into ~ で一時テーブルを作成、データ挿入するのですが、 この命令で作成された一時テーブルにプライマリキーを作成したいと 考えております。 目的は、挿入される件数が多くなりそうなので、 検索を速くする為です。 プライマリキーを作成するのは、 ALTER TABLE ~ CONSTRAINT PK_xxx PRIMARY KEY CLUSTERED ( ~ ) で作成できる事は、理解しております。 これらの処理をストアドプロシージャで行いたいのですが、 注意点としては、当ストアドプロシージャが 並行して実行される事を考慮しておかなくてはなりません。 以下のようなサンプルを作成し、テストしてみたのですが、 セション1でストアドプロシージャ実行後、 セション2でストアドプロシージャを実行してみたのですが、 以下のエラーメッセージが表示されてしまいます。 ここで質問ですが、 制約名をどのようにすれば実現できるのでしょうか。 たとえば、制約名を省略すれば、システム内で一意な名称を 命名してくれるような書き方はないのでしょうか。 ご存じの方、ご回答宜しくお願いします。 -- サンプルストアドプロシージャ create procedure proc_test as select getdate() AS sysdate into #worktable alter table #worktable with nocheck add constraint pk_xxx primary key clustered ([sysdate]) waitfor time '23:59' -- テストの為待機 -- セション1ストアドプロシージャ実行 exec proc_test -- セション2ストアドプロシージャ実行 exec proc_test -- セション2の実行結果 (1 行処理されました) メッセージ 2714、レベル 16、状態 4、プロシージャ proc_test、行 6 データベースに 'pk_xxx' という名前のオブジェクトが既に存在します。 メッセージ 1750、レベル 16、状態 0、プロシージャ proc_test、行 6 制約を作成できませんでした。以前のエラーを調べてください。