我有包含標識列的表在Oracle數據庫12C:如何在插入帶有標識列的Oracle表時使用%ROWTYPE?
CREATE TABLE foo (
id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
bar NUMBER
)
現在我要插入到使用PL/SQL表。因爲在實踐中,表中有很多列,我使用%ROWTYPE
:
DECLARE
x foo%ROWTYPE;
BEGIN
x.bar := 3;
INSERT INTO foo VALUES x;
END;
但是,它給我這個錯誤:
ORA-32795: cannot insert into a generated always identity column
ORA-06512: at line 5
既然是代碼的可讀性和可維護性非常好,我不想停止使用%ROWTYPE
。由於我在任何情況下都不想允許任何內容,除了自動生成的ID,我不想解除GENERATED ALWAYS
限制。
This文章建議能夠使用%ROWTYPE
的唯一方法是切換到GENERATED BY DEFAULT ON NULL
。有沒有其他方法可以解決這個問題?
'GENERATED BY DEFAULT ON NULL''有什麼問題? –
@MatthewMcPeak有人可以插入自己的「id」,這不是序列的一部分。我不想這樣做。 – Anders