sql >> データベース >  >> RDS >> PostgreSQL

Spring Data JPA + Hibernate Skip Locked rows(PostgreSQL)

    あなたのコードは大丈夫です。覚えておく必要があるのは、PESSIMISTIC_WRITEがSELECT …​ FOR UPDATE SKIP LOCKEDを使用することだけです。 OracleおよびPostgreSQL9.5 。 JPAに、新しいバージョンのPostgresを何を使用するかを伝えるのを忘れていたかもしれません。したがって、2つのオプションがあります:

    • SKIP LOCKEDをサポートするPostgreSQLダイアレクトを使用していることをJPAに伝えます :
      spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL10Dialect
      
      この後、目的の出力を受け取りました:
      where
          subscripti0_.valid_until<=? 
      and subscripti0_.status='ACTIVE' 
      for update of subscripti0_1_ skip locked
      
      そして明らかに、トランザクションが完了するまで、並行スレッドはロックされた行をフェッチできませんでした。
    • ネイティブクエリを使用する:
      SELECT * FROM objects o WHERE o.valid_until <= :validUntil FOR UPDATE SKIP LOCKED 
      


    1. COL_LENGTH()を使用して、SQLServerで列の長さを取得します

    2. .csvファイルをOracleFormsアプリケーションにインポートする

    3. MySQL5.7からMySQL8.0への移行-知っておくべきこと

    4. CTEから挿入