我創建了第 3 方公司為我們創建工具所需的視圖。他們說GET呼叫要求視圖具有primary key. 基礎表有一個PK名為 的列IDFaktura,但視圖不將其計為PK. 因此,我嘗試執行以下操作:
CREATE OR REPLACE VIEW view_FAKTURA (extnr, nr, fakturadate,
constraint view_FAKTURA_pk primary key (idfaktura) disable novalidate)
AS SELECT idfaktura, extnr, nr, fakturadate FROM table_faktura WHERE
fakturadate >= to_date('01.12.2019', 'dd.mm.yyyy') AND fakturadate <
to_date('31.12.2019', 'dd.mm.yyyy');
But get the error: SQL Error: ORA-00904: "table_FAKTURA"."IDFAKTURA": invalid identifier 00904. 00000 - "%s: invalid identifier"
為什么它給我這個錯誤?根據我在網上找到的內容,它應該可以作業。
uj5u.com熱心網友回復:
您在 column 上定義 PK idfaktura,但您沒有創建具有該名稱的列。當您在視圖查詢中選擇四列時,您似乎打算將它放在那里(而不是真的想要 PK extnr),所以您只需要將它包含在視圖本身的列串列中:
CREATE OR REPLACE VIEW view_FAKTURA (idfaktura, extnr, nr, fakturadate,
-------------------------------------^^^^^^^^^^
constraint view_FAKTURA_pk primary key (idfaktura) disable novalidate) AS
SELECT idfaktura, extnr, nr, fakturadate
FROM table_faktura
WHERE fakturadate >= to_date('01.12.2019', 'dd.mm.yyyy')
AND fakturadate < to_date('31.12.2019', 'dd.mm.yyyy');
順便說一句,您可能會發現使用日期文字更簡單:
...
WHERE fakturadate >= DATE '2019-12-01'
AND fakturadate < DATE '2019-12-31';
db<>小提琴
而且,如果這應該涵蓋整個月,您可能實際上想要:
...
WHERE fakturadate >= DATE '2019-12-01'
AND fakturadate < DATE '2020-01-01';
因為您當前的范圍將排除 12 月 31 日之后的所有資料。這可能是你想要的,但當然,但看起來不太可能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/494495.html
