2016-10-17 8 views
1
  var promises = []; 
      promises.push(
       sequelize.transaction(function(t1) { 
        return models.car_service.findAll({ 
         where: sequelize.and(
          { "id_dtc": 6}, 
          { "id_car": 95 } 
         ), 
         transaction: t1, 
         lock: t1.LOCK.UPDATE, 
         logging: console.log 
        }).then(function(result) { 
         console.log(result.dataValues); 
         if(!result.dataValues){ 
         return models.car_service.create(
          { 
           id_dtc: 6, 
           id_car: 95, 
           priority: config.get('apiConfig.coreControllerConfig.createIssueOptions.DTCPriority'), 
           status: 'new', 
           dtc_is_pending: false 
          }); 
         } 
        }) 
       }) 
      ); 
      promises.push(
       sequelize.transaction(function(t2) { 
        return models.car_service.findAll({ 
         where: sequelize.and(
          { "id_dtc": 6}, 
          { "id_car": 95 } 
         ), 
         transaction: t2, 
         lock: t2.LOCK.UPDATE, 
         logging: console.log 
        }).then(function(result) { 
         console.log(result.dataValues); 
         if(! result.dataValues){ 
         return models.car_service.create(
          { 
           id_dtc: 6, 
           id_car: 95, 
           priority: config.get('apiConfig.coreControllerConfig.createIssueOptions.DTCPriority'), 
           status: 'new', 
           dtc_is_pending: false 
          }); 
         } 
        }) 
       }) 
      ); 
      return promise.all(promises).then(function(results) { 
       console.log(results); 
      }); 

로그가sequelize transaction t.lock.UPDATE가 다른 트랜잭션을 차단하지 않는 이유는 무엇입니까?

Executing (14a1c614-c2f1-46a1-a99f-89bc92ca23dc): SELECT "id", "status",  "priority", "mileage", "done_at", "created_at", "updated_at", "id_car", "id_service_type", "id_service_edmunds", "id_service_customized", "id_recall_recallmasters", "id_service_archive", "id_service_mmy", "id_service_preset", "id_dtc", "dtc_is_pending" FROM "car_service" AS "car_service" WHERE ("car_service"."id_dtc" = 6 AND "car_service"."id_car" = 95) FOR UPDATE; 
Executing (084558cc-730d-441a-a794-aaa27898db77): SELECT "id", "status", "priority", "mileage", "done_at", "created_at", "updated_at", "id_car", "id_service_type", "id_service_edmunds", "id_service_customized", "id_recall_recallmasters", "id_service_archive", "id_service_mmy", "id_service_preset", "id_dtc", "dtc_is_pending" FROM "car_service" AS "car_service" WHERE ("car_service"."id_dtc" = 6 AND "car_service"."id_car" = 95) FOR UPDATE; 

undefined 
undefined 
난 아직도, 내가 갱신을위한 선택이 트랜잭션을 차단해야 행 잠금이 생각 테이블에이 같은 행을 추가하고 왜

사람이 알고 있나요 ?

답변

0

트랜잭션의 두 번째 쿼리에서 옵션으로 각 트랜잭션 개체 {transaction: t1} 또는 {transaction: t2}을 전달해야합니다.

예문 참조 (in the documentation)