UJP - 技術情報

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

     

Identity属性フィールドの桁数拡張方法


Identity属性フィールドの桁数拡張方法


0.改訂履歴

  • 2002.08.13 新規作成

1.はじめに

 このドキュメントでは,IDENTITY属性を持つテーブルを操作するためのノウハウを1例を挙げて紹介するものである.

 なお,使用しているSybaseは,RedHat Linux 7.2上で稼働しているSybase SQL Server 11.0.3.3である.

 新しいバージョンのSybase ASEでは,DDLでalter table modifyを実行する事で桁数を増やす事ができるが,古いバージョンでは実行できないので,この手順がある.

 今回の用途以外にも,identityを利用するテーブルのデータを操作する時に応用できると考えている.

2.テストしてみる

  • 次のようなテーブルを作成する.

1> create table TEST_TABLE1 
2> ( 
3> aa numeric(10,0) identity,
4> bb char(10)
5> )
6> go
1>

  • Identity項目が入っている.
  • キーは付いていない.
  • 作成したテーブルに,データを入れる.

1> insert into TEST_TABLE1 values("aa")
2> insert into TEST_TABLE1 values("bb")
3> insert into TEST_TABLE1 values("cc")
4> go
(3 row affected)
1> select * from TEST_TABLE1
2> go
 aa            bb         
 ------------- ---------- 
             1 aa         
             2 bb         
             3 cc         
(3 rows affected)
1>

  • ここでは3件のデータを挿入して,その内容を確認している.
  • 2件目のデータを消して,確認する.

1> delete TEST_TABLE1 where aa=2
2> go
(1 row affected)
1> select * from TEST_TABLE1
2> go
 aa            bb         
 ------------- ---------- 
             1 aa         
             3 cc         
(2 rows affected)
1>

  • Identity属性を持つフィールドの桁数を拡張したテーブルを作成する.
    • TEST_TABLE1は10桁で定義しているが,今回は12桁に変更.

1> create table TEST_TABLE2
2> (
3> ddd numeric(12,0) identity,
4> eee char(10)
5> )
6> go
1>

  • insert intoを使って,TEST_TABLE1→TEST_TABLE2にデータを複写する.
  • この時,identity_insertを設定しておいて,連番の自動発行を停止しておく.

1> set identity_insert TEST_TABLE2 on
2> go
1> insert TEST_TABLE2 ( ddd,eee) select aa,bb from TEST_TABLE1
2> go
1>

  • この時,複写元・先のテーブルでは,フィールド名を省略できない.
  • コピーされたほうのテーブルTEST_TABLE2のデータを確認してみる.

1> select * from TEST_TABLE2 
2> go
 ddd             eee        
 --------------- ---------- 
               1 aa         
               3 cc         
1>

  • TEST_TABLE1と同じ内容だとわかる.
  • コピーされたテーブルにデータをINSERTしてみる.
  • この時,identity_insertを解除しておいて,連番の自動発行する.

1> set identity_insert TEST_TABLE2 off
2> insert into TEST_TABLE2 values("PowerBook")
3> go
1> select * from TEST_TABLE2
2> go
 ddd             eee        
 --------------- ---------- 
               1 aa         
               3 cc         
               4 PowerBook  
1>



広告スペース
Google