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 |