新聞中心
某些類型的結(jié)果集對于某些查詢是不適用的。如果為運行的查詢指定了不可用的結(jié)果集類型或并發(fā)類型,則 OceanBase Connector/J 將遵循相應(yīng)的規(guī)則來確定最佳可行類型。

實際的結(jié)果集類型和并發(fā)類型是在運行語句時確定的,如果所需的結(jié)果集類型或并發(fā)類型不可用,則驅(qū)動程序?qū)⒃谡Z句對象上發(fā)出 SQLWarning。SQLWarning 對象包含該請求類型不可用的原因。檢查警告以驗證您是否收到了所需的結(jié)果集類型。
結(jié)果集限制
對結(jié)果集的查詢具有以下限制。不遵循這些準(zhǔn)則將導(dǎo)致 OceanBase Connector/J 選擇備用結(jié)果集類型或并發(fā)類型。
生成可更新的結(jié)果集的限制:
查詢只能從單個表中選擇,并且不能包含任何聯(lián)接操作。另外,為了執(zhí)行插入操作,查詢必須選擇所有不可為空的列以及所有沒有默認值的列。
查詢不能使用
SELECT *。查詢必須僅選擇表列。不能選擇派生的列或聚合,例如一組列的
SUM或MAX。
生成對回滾敏感的結(jié)果集的限制:
查詢不能使用
SELECT *。查詢只能從單個表中選擇。
可回滾和可更新的結(jié)果集不能有 Stream 列。當(dāng)服務(wù)器必須提取 Stream 列時,會將讀取大小減為 1,并阻塞 Stream 列之后的所有列,直到讀取到 Stream 列為止。結(jié)果為無法批量獲取列和滾動瀏覽。
作為 SELECT * 限制的一種解決方法,可以使用表別名,如以下示例所示:
SELECT tab.* FROM TABLE tab ...可以通過一種簡單的方法來確定查詢是否可能生成回滾敏感或可更新的結(jié)果集:如果可以合法地將 ROWID 列添加到查詢列表中,則該查詢可能為對回滾敏感或可更新的結(jié)果集。
結(jié)果集降級規(guī)則
如果指定的結(jié)果集類型或并發(fā)類型不可用,那么 OceanBase Connector/J 將根據(jù)以下規(guī)則選擇備用類型:
如果指定的結(jié)果集類型為
TYPE_SCROLL_SENSITIVE,驅(qū)動程序無法滿足該請求,則將嘗試降級為TYPE_SCROLL_INSENSITIVE。如果指定或降級的結(jié)果集類型為
TYPE_SCROLL_INSENSITIVE,驅(qū)動程序無法滿足該請求,則將嘗試降級為TYPE_FORWARD_ONLY。如果指定的并發(fā)類型為
CONCUR_UPDATABLE,驅(qū)動程序無法滿足該請求,則將嘗試降級為CONCUR_READ_ONLY。
說明
OceanBase Connector/J 對結(jié)果集類型和并發(fā)類型的任何操作都是相互獨立的。
運行查詢后,可以通過在結(jié)果集對象上調(diào)用方法來驗證 OceanBase Connector/J 實際使用的結(jié)果集類型和并發(fā)類型。
int getType() throws SQLException此方法返回用于查詢的結(jié)果集類型的
int值。ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_SENSITIVE或ResultSet.TYPE_SCROLL_INSENSITIVE是可能的值。
int getConcurrency() throws SQLException此方法返回用于查詢的并發(fā)類型的
int值。ResultSet.CONCUR_READ_ONLY或ResultSet.CONCUR_UPDATABLE是可能的值。
避免更新沖突
以下是有關(guān) OceanBase Connector/J 可更新結(jié)果集的注意事項:
不對可更新結(jié)果集強制執(zhí)行寫鎖定。
不檢查與結(jié)果集
DELETE或UPDATE操作的沖突。
如果您嘗試對另一個提交事務(wù)的行執(zhí)行 DELETE 或 UPDATE 操作,則會發(fā)生沖突。
OceanBase Connector/J 使用 ROWID 唯一標(biāo)識數(shù)據(jù)庫表中的一行。只要驅(qū)動程序嘗試向數(shù)據(jù)庫發(fā)送 UPDATE 或 DELETE 操作時 ROWID 是有效的,該操作就會運行。
驅(qū)動程序?qū)⒉粫蟾嫫渌烟峤皇聞?wù)所做的任何更改。任何沖突都將被忽略,并且您的更改將覆蓋以前的更改。
為避免此類沖突,請在運行生成結(jié)果集的查詢時使用 FOR UPDATE 功能。這將避免沖突,但也將阻止同時訪問數(shù)據(jù)。數(shù)據(jù)項只能同時保留一個寫鎖。
標(biāo)題名稱:創(chuàng)新互聯(lián)OceanBase教程:OceanBase 限制和降級規(guī)則
當(dāng)前網(wǎng)址:http://m.fisionsoft.com.cn/article/djcsosc.html


咨詢
建站咨詢
