Solaris のシステム管理 (ネーミングとディレクトリサービス : NIS+ 編)

-a オプションを指定してエントリを追加する

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