MSDE FunClub | 最終更新日 : 2000/07/22 | |
Microsoft Data Engine FunClub |
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻) | ||
【第2章129p 〜 131p掲載】 |
-- [更新系SQL文の基礎(例題2)EX2-02.SQL] -- SQLServer7.0 Transact-SQL言語 -- 日本技術ソフト開発 堀川 明 -- http://www.horikawa.ne.jp/msde/ -- -- これから操作する既定のデータベースを MySampleTest にします USE MySampleTest GO -- ( 件処理されました)の表示を抑制する SET NOCOUNT ON GO -- [運送会社]テーブルの存在チェック IF( ( object_id('運送会社') IS NULL ) OR OBJECTPROPERTY( object_id('運送会社') , 'IsTable' ) = 0 ) BEGIN PRINT '****Error!!****' PRINT 'AccessのNorthwindデータベースの[運送会社]テーブルを使います' PRINT '[運送会社]テーブルを転送してください' RAISERROR( '[運送会社]テーブルが見つかりません',16,127) RETURN END GO -- *********************************************************** -- [運送会社]テーブルの[運送コード]にオートナンバー型が設定 -- され、IDENTITY型になります。 -- この例題では、[運送コード]に明示的な数値代入を行いますので -- IDENTITY型があるとよくありません。 -- IDENTITY型があるときはそれを削除したいのですが、残念ながら -- ALTER TABLEの既存列に関するIDENTITY属性の削除ができません -- しかたないので、次のような苦肉の策を取りました -- 他に良い方法があるかなー? -- *********************************************************** IF( IDENT_SEED('運送会社') IS NOT NULL ) BEGIN RAISERROR('IDENTITY列が設定されています',0,1) WITH NOWAIT -- コピー先の一時テーブルの作成 CREATE TABLE #TMP_運送会社( 運送コード int , 運送会社 varchar(40) , 電話番号 varchar(24) ) -- 既存テーブルのデータをコピーする INSERT INTO #TMP_運送会社 SELECT * FROM 運送会社 -- 本物のテーブルを削除 DROP TABLE 運送会社 END --テーブル削除を行ったので、それを反映させるため、バッチを区切る --次の同じ名前のテーブル作成がうまく働かない GO -- 一時テーブルが存在するときは、処理を継続させる IF( object_id('tempdb..#TMP_運送会社') IS NOT NULL ) BEGIN RAISERROR('運送会社テーブルを作りなおします',0,1) WITH NOWAIT -- 本物のテーブルを作りなおす CREATE TABLE 運送会社( 運送コード int , 運送会社 varchar(40) , 電話番号 varchar(24) ) -- レコードを元に戻す INSERT INTO 運送会社 SELECT * FROM #TMP_運送会社 -- 一時テーブルを削除する DROP TABLE #TMP_運送会社 END GO -- 例題2の解答です -- 1レコードの登録 INSERT INTO 運送会社 VALUES( 10 , 'キツネウンユ' , '(03)111-1111' ) GO -- 登録する列を明示する INSERT INTO 運送会社(運送コード,運送会社,電話番号) VALUES( 11 , 'キツネウンユ2' , '(03)111-2222' ) GO -- 列名を明記すれば、順番を変えても良い INSERT INTO 運送会社(電話番号 ,運送コード,運送会社) VALUES( '(03)111-3333' , 12 , 'キツネウンユ3' ) GO -- 列名を明記すれば、リストにない列はデフォルトとなる -- 運送会社の列は、デフォルト値です INSERT INTO 運送会社(運送コード,電話番号) VALUES( 14 , '(03)111-4444') GO -- 次のDEFALUTキーワードを使うこともできます INSERT INTO 運送会社(運送コード,運送会社,電話番号) VALUES( 15 , DEFAULT , '(03)111-5555' ) GO -- 次のNULLキーワードを使うこともできます INSERT INTO 運送会社(運送コード,運送会社,電話番号) VALUES( 16 , NULL , NULL ) GO PRINT 'レコード挿入処理を行いました' GO