69 データ格納 / テーブルの読み書き-2


生徒氏名を格納するテーブル”StuMast”には、五つのフィールド FisYear, Grade, Class, Number, Name の他に、もうひとつ「特別な」フィールドがあります。

SQLSERVERでは “ID BIGINT IDENTITY(1,1) NOT NULL UNIQUE” と、
ACCESSでは簡単に “ID COUNTER(1,1)” と、定義されるフィールド”ID”です。

このフィールドの数値は一意(UNIQUE)であり、データを書き込むごとに、システムがひとつづつ加算します。
データを削除しても減じられることはなく、只々、増えてゆきます。

SQLSERVERではBIGINT(8バイト)なので、9,223,372,036,854,775,807まで採番可能、事実上は無制限です。
ACCESSだとLong 長整数型なので、2,147,483,647まで、ここらがオモチャと陰口される所以(笑)でしょう。

テーブルへのデータ書き込みには、この”ID”が、極めて重要な役割を担います。


「2020年度年度3年2組13番の生徒氏名”なんのなにがし”を書き込む」には、下記一連のコードを発行します。

SELECT COUNT(ID) as Cnt SELECT From StuMast WHERE (FisYear = 2020) and(Grade = 3) AND (Class = 2) AND (Number = 13)
if Cnt = 0 then
 INSERT INTO StuMast FisYear,Grade,Class,Number, Name VALUES( 2020, 3, 2, 13, ‘なんのなにがし’)
else
 UPDATE StuMast Set Name = ‘なんのなにがし’ WHERE (FisYear = 2020) and(Grade = 3) AND (Class = 2) AND (Number = 13)
end if

即ち、データ固有(一意, UNIQUE)な”ID”を頼りにして「2020年度年度3年2組13番の生徒氏名」の存在を確認して、
 既存無しならINSERT(挿入)、
 既存ありならUPDATE(更新)、
を、使い分けなくてはなりません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です