2

Oracleにテーブルがあります。このテーブルには、EMPLOYEE_ID (NUMBER、Nullable、ただし NULL の数は 0) および EMPLOYEE_NUMBER (VARCHAR2、Nullable、ただし NULL の数は 0) があります。

次に、このテーブルにビューを作成します。

CREATE OR REPLACE FORCE VIEW APPS.XXKE_L2E_EMPLOYEE
(
   PERSON_ID,
   EMPLOYEE_NUMBER,
   ...
)
AS
   SELECT EMPLOYEE_ID,
          EMPLOYEE_NUMBER,
          ...
     FROM xxke.xxke_employees e
          INNER JOIN xxke.xxke_organizations o ON e.organization_id = o.organization_id
          INNER JOIN xxke.xxke_operating_units ou ON e.org_id = ou.org_id;

ALTER VIEW APPS.XXKE_L2E_EMPLOYEE
ADD CONSTRAINT XXKE_L2E_EMPLOYEE_V_PK
PRIMARY KEY(PERSON_ID) DISABLE;

そのビューでPERSON_IDが(NVLトリックを使用している場合でも)Nullableになる可能性はありますが、EMPLOYEE_NUMBERはNullableではありません

QUESTION : ビューで PERSON_ID 列が Nullable にならないように、Oracle にビューを作成させるにはどうすればよいですか? または、WCF oData サービスでこのビューにクエリを実行するにはどうすればよいですか。現在、edmx ファイルを更新した後、次のようになります。

エラー: Oracle.ssdl(227,6): エラー 0075: キー パーツ: タイプ XXKE_L2E_EMPLOYEE の 'PERSON_ID' が無効です。キーのすべての部分は、null 非許容である必要があります。

4

2 に答える 2

0

ビュー内の列を null 非許容にする場合は、この列を主キーとして含むテーブルと内部結合し、(この場合) ビュー定義でそのテーブルから PERSON_ID を選択します。これで問題は解決します。

于 2017-01-11T10:53:53.183 に答える