既存のエントリを修正 (編集) する場合は、-e オプションまたは -E オプションを指定します。Solaris 7 リリースでは、旧リリースとの互換性を維持するため、-m オプションも残されています。新しいアプリケーションまたはコマンド行での操作には、-e オプションまたは -E オプションを使うことをお勧めします。
テーブル内の既存のエントリ (行) を編集するには、nistbladm コマンドに -e オプションまたは -E オプションを指定し、それに続けて、値を変更した column=value のペア (1 つまたは複数) とテーブル内の特定の行を示すインデックス名を指定します (「nistbladm とインデックス名」を参照)。
nistbladm [-e | -E] column=" value" ¥ column=" value" ¥ ... indexedname |
-e オプションまたは -E オプションを指定して既存エントリ (行) を修正する場合は、次の点に注意してください。
value は必ず引用符で囲む。たとえば、cname 列の値を deneb に変更する場合は、column=value ペアを cname="deneb" と指定する
検索可能列の値は、1 行 (エントリ) 単位でしか変更できない
エントリ (行) の列を空白にする場合は、column=" " と指定する。つまり、value には、引用符で囲んだ半角スペースを指定する
-e オプションを指定した場合、複数のエントリの検索可能列値を変更することになる nistbladm コマンドは実行されず、エラーが返されます。このとき、検索不可列の値は考慮されません。
nistbladm column=" value" ¥ column=" value" ¥ ... indexedname |
-e オプションを指定した場合、変更する列の値を指定するだけです。
ここで次のテーブルについて考えます。
Dept |
Site |
Name |
---|---|---|
Sales |
SanFran |
Tsosulu |
Name 列の値を Chandar に変更するには、次のように入力します。
master% nistbladm -e Name="Chandar" [Dept='Sales',Site='SanFran'], ¥ depts.doc.com. |
修正後のテーブルは次のようになります。
Dept |
Site |
Name |
---|---|---|
Sales |
SanFran |
Chandar |
(上記の例では、インデックス名に Name 列が含まれていません。これは、Name 列が検索可能ではないためです。)
C シェルを使っている場合は、角カッコを含む数式を引用符でオフセットすることもできます。
-e オプションを指定して検索可能列の値を編集するには、新たに指定した値が (インデックス名によって識別される) 1 行にだけ適用されることが条件になります。したがって、Dept 列の値を Manf に変更するには、次のように入力します。
master% nistbladm -e Dept="Manf" [Dept='Sales',Site='SanFran'], ¥ depts.doc.com. |
Dept (検索可能) |
Site (検索可能) |
Name |
---|---|---|
Manf |
SanFran |
Chandar |
しかし、検索可能列に Manf と SanFran という値を持つエントリが既に存在する場合は、nistbladm -e はエラーを返します。
同一のエントリが対象である場合は、複数の列の変更を指定できます。たとえば、Dept 列と Name 列の値を変更するには、次のように入力します。
master% nistbladm -e Dept="Manf" Name="Thi" ¥ [Dept='Sales',Site='SanFran'],depts.doc.com. |
Dept (検索可能) |
Site (検索可能) |
Name |
---|---|---|
Manf |
SanFran |
Thi |
-E オプションは、nistbladm コマンドで既存のエントリを上書きする場合のアプリケーションに使用します。
ここで次のテーブルを想定します。
Dept (検索可能) |
Site (検索可能) |
Name |
---|---|---|
Sales |
SanFran |
Chandar |
Sales |
Alameda |
Achmed |
このテーブルに対して次のコマンドを実行します。
master% nistbladm -E Site="Alameda" Mgr="Chu" ¥ [Div='Sales',Site='SanFran'],depts.doc.com. |
すると、Sales SanFran Chandar 行が Sales Alameda Chu に変わります。しかも、キーの値 Sales Alameda によって識別される Sales Alameda Achmed 行までもが変更の対象になります。その結果、コマンド実行前には 2 つあったはずの行が 1 つになります。
Dept (検索可能) |
Site (検索可能) |
Name |
---|---|---|
Sales |
Alameda |
Chu |
これは複数の行を編集することになるので、オプションが -e であれば、上記のコマンドはエラーを返します。しかし、実際には -E が指定されているので、複数のエントリ (行) が編集されます。