私はPostgreSQL(現在はMSSQLで動作しています)の新機能です。複数の関数が複合型を使用しているときに複合型を変更するにはどうすればよいですか?
create or replace function public.getCustomers(value text)
returns setof Customer as
$$
select "uid", "name", from "Common_Customer";
$$
language sql;
すべてが動作し、痛みはありませんが、突然、あなたは顧客にもlastname
プロパティを必要としていることを把握:我々は複合型Customer(uid uuid, name text)
を持っていて、のようなあなたの関数(手順)がこの型を返すように選択すると仮定しますデータベースから返されます。
したがって、顧客のタイプを変更して、属性lastname
を追加すると、問題が始まる場所になります。 Customer
タイプには属性を簡単に追加できるとわかりましたが、新しく追加された属性lastname
が存在しないため、すべての機能が中断され、複合タイプ属性のデフォルトはありません。
あなたはこのような状況で何をしていますか?まず、その型を使ってすべての関数を見つけ出し、それらを置き換えるクエリを書いてから型を変更し、1回のコミットですべての関数を置き換えますか?
MSSQLには型がありません(プロシージャが返す必要のある型を指定する必要はありません)。ストアドプロシージャは、必要なものを正確に返すことができます(これは時々問題です)。だから私はここで少し空白です。