我有以下的觸發這確保只有一個記錄具有場DEFAULTCARD = 1DB2觸發超時
create trigger TRG_U_XSTRDCRD
after update on XSTOREDCARD referencing new as N old as O
for each row mode db2sql
begin atomic
if N.DEFAULTCARD = 1 then
update XSTOREDCARD
set DEFAULTCARD = 0
where USERS_ID = N.USERS_ID and ID <> N.ID;
end if;
[email protected]
我還要確保只有一個記錄具有1的EBACTIVE字段的值,所以我試過這個。
create trigger TRG_U_XSTRDCRD
after update on XSTOREDCARD referencing new as N old as O
for each row mode db2sql
begin atomic
if N.DEFAULTCARD = 1 then
update XSTOREDCARD
set DEFAULTCARD = 0
where USERS_ID = N.USERS_ID and ID <> N.ID;
end if;
if N.EBACTIVE = 1 then
update XSTOREDCARD
set EBACTIVE = 0
where USERS_ID = N.USERS_ID and ID <> N.ID;
end if;
[email protected]
但它沒有工作,它會導致在超時的更新幾分鐘後:
Caused by: com.ibm.db2.jcc.b.SqlException: DB2 SQL error: SQLCODE: -101, SQLSTATE: 54001, SQLERRMC: null
at com.ibm.db2.jcc.b.zc.e(zc.java:1606)
at com.ibm.db2.jcc.b.zc.a(zc.java:1206)
at com.ibm.db2.jcc.a.db.h(db.java:149)
at com.ibm.db2.jcc.a.db.a(db.java:43)
at com.ibm.db2.jcc.a.r.a(r.java:30)
at com.ibm.db2.jcc.a.sb.g(sb.java:152)
at com.ibm.db2.jcc.b.zc.n(zc.java:1186)
at com.ibm.db2.jcc.b.ad.db(ad.java:1761)
at com.ibm.db2.jcc.b.ad.d(ad.java:2203)
at com.ibm.db2.jcc.b.ad.V(ad.java:521)
at com.ibm.db2.jcc.b.ad.executeUpdate(ad.java:504)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2595)
... 19 more
對什麼是錯或如何做到這一點有什麼建議?
乾杯! NFV
請顯示確切的錯誤代碼和完整的信息。 – mustaccio
SQLCODE -101不是超時;這意味着你正在達到內存限制或其他資源限制。既然你沒有提到你的DB2版本和平臺,我不能給你更多的細節。與您的DBA交談。 – mustaccio
以下頁面可能會爲您提供一些提示。 http://www.dbforums.com/db2/978746-sql0954c-not-enough-storage-available-application-heap-process.html –