當我執行以下插入查詢時:
insert into FEED_STAGING_GOOD_TRADE (JOBEXECUTIONID, STAGINGID, ROWNUMBER, system, traderef, mtmvaluation, mtmvaluationccy, prcmtmquality, prcdate)
values (64, NEXTVAL('FEED_STAGING_TRADE_SEQ') ,2,'RMS','TRD3',1.11111111E8,'USD',100.0,'2011-12-09 00'::timestamp)
我得到以下輸出:
ERROR: null value in column "tradestagingid" violates not-null constraint
Detail: Failing row contains (46, 64, null, 2, null, null, null, RMS, null, null, TRD3, null, null, null, null, null, null, null, null, null, null, null, null, 111111111, USD, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 100, 2011-12-09 00:00:00, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null).
應該由NEXTVAL函式結果填充的第三列被發送為空,這違反了某個非空約束。
但是,當我NEXTVAL像這樣獨立執行時:
select NEXTVAL('FEED_STAGING_TRADE_SEQ');
該函式回傳正確的值,如下面的螢屏截圖所示:

uj5u.com熱心網友回復:
您的插入為 column 提供了一個值stagingid,但沒有為該列提供一個值tradestagingid(錯誤訊息所指的)
您的 INSERT 陳述句甚至沒有列出命名的列,tradestagingid因此將使用該列的默認值。
由于您似乎希望tradestagingid用序列值填充 ,因此您需要更改 INSERT 的列串列并使用tradestagingid代替stagingid。或者更好:將其定義為標識列,以便自動填充。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331693.html
標籤:sql PostgreSQL 数据库序列
上一篇:DbUpdateConcurrencyException和40001postgres代碼有什么區別?
下一篇:在表格中使用類中的方法
