Sybase Central でユニーク制約をドロップする場合、表示されるドロップ ステートメントは次のとおりです。
ALTER TABLE "DBA"."enr_rds_heating_control_validation_t" DROP CONSTRAINT "ASA826";
ここでドロップされる制約 ASA826 は、値が constraint_name 列から取得される SYS.SYSCONSTRAINT ビューから取得されます。
ここでの問題は、これが Sybase によって制約に割り当てられた一意の識別子であり、現在のデータベースに対してのみ有効であるため、別のデータベースに対して実行すると、この制約が a) 存在しないか、b) 完全に別の制約になる可能性があることです。
ただし、制約を作成するときに名前を付けますが、この場合enr_rds_heating_control_validation_t UNIQUE (enr_rds_heating_type_id,enr_rds_heating_control_id)
、この値SYS.SYSINDEX
は index_name 列のビューに表示され、この値はすべてのデータベースで一意のままになります。
制約名の代わりに index_name を通過する制約を削除しようとしましたが、制約が見つからないというエラーが表示されました。
制約名ではなくインデックス名を使用して一意の制約を削除するにはどうすればよいですか?