nistbladm コマンドに -a オプションを指定しておくと、追加するエントリと同じエントリがすでに存在する場合は、エントリの上書きは行われずにエラーが返されます。あるエントリの検索可能列の値が、追加するエントリの検索可能列の値とまったく同じである場合、そのエントリは「すでに存在しているもの」と判断されます。(このとき、検索不可列の値は一切考慮されません。)
-a オプションを指定する場合、次のように、テーブル内のすべての列の値を指定する必要があります。
nistbladm -a column=" value" ¥ column=" value" ¥ ... tablename nistbladm -a indexedname
(テーブルのすべての列名とその特性を表示する場合は、niscat -o tablename コマンドを実行します。)
たとえば、depts テーブルに新しい行を追加する場合は、次に示すように、列の数だけ column=value ペアを指定します。
rootmaster% nistbladm -a Name='R&D' Site='SanFran' ¥ Name='vattel' depts.doc.com.
なお、これと同じエントリをインデックス名を指定して追加する場合は、次のように入力します。
rootmaster% nistbladm -a [Name='R&D',Site='SanFran',¥ Name='vattel'],depts.doc.com.
いずれの場合も、次のようなテーブルとなります。
Dept |
Site |
Name |
---|---|---|
R&D |
SanFran |
vattel |
C シェルを使っている場合は、角カッコを含む数式を引用符でオフセットすることもできます。
nistbladm コマンドでは 1 回につき 1 つのエントリしか追加できません。つまり、追加する行の数だけ nistbladm コマンドを実行する必要があります。
追加するエントリ (行) の各列と同じ値を持つ行が既に存在する場合、nistbladm -a はエラーを返します。1 つのテーブルの中に同じ行が存在することはできません。検索可能列の値が同一である場合、それらの行は同一であるとみなされます。このとき、検索不可列の値は考慮されません。
たとえば、Dept 列と Site 列が検索可能であって、Name 列は検索可能ではないテーブルに対して nistbladm を実行すると、次の 2 つの行は同一であるとみなされます。
Dept (検索可能) |
Site (検索可能) |
Name (検索不可) |
---|---|---|
Sales |
Vancouver |
Hosteen |
Sales |
Vancouver |
Lincoln |
この場合、nistbladm -a を実行して Sales Vancouver Lincoln という行を作成できません。
しかし、複数の検索可能列のどちらか一方の値が重複するだけであれば、nistbladm -a を実行して新しい行を作成できます。たとえば、以下の 2 つのコマンドを実行すると、一部の値が異なるだけの 2 つの列を作成できます。
rootmaster% nistbladm -a Dept='Sales' ¥ Site='Vancouver' Name='hosteen' staff.doc.com. rootmaster% nistbladm -a Dept='Sales' ¥ Site='SanFran' Name='lincoln' staff.doc.com.
これらのコマンドを実行すると、検索可能列の一部が同じで、すべてが同じではない 2 つの行が作成されます。
Dept |
Site |
Name |
---|---|---|
Sales |
Vancouver |
hosteen |
Sales |
SanFran |
lincoln |