|
|
create table [自動] (
[社員コード] IDENTITY(100,10)
,[氏名] VARCHAR(50)
,primary key([社員コード])
)
| |
|
IDENTITY は COUNTER でも可
最初の 100 は初期値で、次の 10 が増分
以下は変更
|
alter table [自動]
alter column [社員コード] IDENTITY(500,2)
| |
|
|
|
|
create table [自動] (
[社員コード] int IDENTITY(100,10)
,[氏名] VARCHAR(50)
,primary key([社員コード])
)
| |
|
MDB と違って、データ型の記述が必要
tinyint、smallint、int、bigint、decimal(p,0)、または numeric(p,0) 列に割り当てることができます
初期値を以下のようにして変更できます
|
DBCC CHECKIDENT ([自動], RESEED, 500)
| |
|
次に作成されるデータは510 です
1) 既存の ID の内容を破棄し、ID 値を持つ列の定義位置が一番最後に変更される。
|
ALTER TABLE [テーブル名] ADD [新しいID列名] INT IDENTITY;
ALTER TABLE [テーブル名] DROP [元のID列のインデックス名];
ALTER TABLE [テーブル名] DROP COLUMN [元のID列名];
sp_rename 'テーブル名.新しいID列', '元のID列名', 'COLUMN';
| |
|
2) SQLServer 同士で http://winofsql.jp/VA003334/msde060812212122.htm を行う
3) 新しいテーブルを IDENTITY 付きで定義し、SET IDENTITY_INSERT を使用する
※ 同一セッションで実行する事。
|
|
|
create table `自動` (
`社員コード` BIGINT NOT NULL AUTO_INCREMENT
,`氏名` VARCHAR(50)
,primary key(`社員コード`)
)
または
create table `自動` (
`社員コード` BIGINT NOT NULL AUTO_INCREMENT UNIQUE
,`氏名` VARCHAR(50)
)
| |
|
●インデックス付きの AUTO_INCREMENT カラムに NULL(推奨)または 0 を挿入すると、
そのカラムには連続値の次の値が設定される。(それ以外の値では、その値が設定されるので注意)
●通常、これは value+1 になる(value はテーブルに現在格納されているそのカラムの最大値)。
●AUTO_INCREMENT は 1 から開始される
●4.1.0 以降では、`社員コード` SERIAL と記述できる
既存の整数列を AUTO_INCREMENT 化
|
alter table `テーブル名`
change column `列名`
`列名` int unsigned not null auto_increment,add index (`列名`)
| |
|
|
|
|
create table "自動" (
"社員コード" SERIAL
,"氏名" VARCHAR(50)
,primary key("社員コード")
)
| |
|
次の値を挿入するには、デフォルト値を割り当てるよう指定してください。
これは、INSERT文の列リストからその列を除外するか、DEFAULTキーワードを使用することで行ないます
serial は、実際は sequence を作成します。
serial で作成された sequence はテーブルの削除と共に削除されます
|
create sequence "自動_社員コード_seq";
create table "自動" (
"社員コード" integer DEFAULT nextval('自動_社員コード_seq') NOT NULL
,"氏名" VARCHAR(50)
,primary key("社員コード")
)
| |
|
シーケンスの存在の確認は、pg_class で行えます ( relkind = 'S' )。
以下は増分の変更
|
alter sequence 自動_社員コード_seq
increment 10
| |
|
以下は開始番号の変更
|
alter sequence 自動_社員コード_seq
restart 100
| |
|
|
|
|
Oracle では テーブルと関連付けた自動番号生成はできません。
sequence を作成して、insert 文の values 句に シーケンス名.nextval として
使用する事になります
| |
|
|
|