2017-04-07 3 views
0

2 개 레코드의 값을 한 번에 업데이트하려고합니다.한 번에 적은 수의 레코드를 업데이트하십시오.

INSERT .... ON DUPLICATE ... UPDATE ...이 작동하지 않습니다.

제목에 대한 게시물을 읽었지만 솔루션이 저에게 적합하지 않으므로 여기에 제 질문이 있습니다. 내가 어디로 잘못 가고 있니?

코드 :

[7.4.2017 10:21:07] Executing Query: 

UPDATE sales 
    SET (ind,otst) = CASE id 
        WHEN 7795 THEN (759900,2.2) 
        WHEN 7799 THEN (779900,5) 
        ELSE (ind,otst) 
        END 
WHERE id IN(7795, 7799) and recNo>1; 

오류 :

[7.4.2017 10:21:09] Value is Null - Native error: 30359

P.S. 여러 행의 단일 열에서 값을 변경하면 잘 작동합니다. 쿼리 실행

+1

어떤 dbms를 사용하고 있습니까? 모든 dbms 제품이 "다중 열 할당"및 "행 유형"확장을 지원하는 것은 아닙니다. – jarlh

+0

저는 absoluteDB에서 embended SQL 엔진을 사용하고 있습니다. 따라서 제한이있을 수 있습니다. 그래서 SQL 코드가 괜찮은 것 같습니까? 괜찮 으면 이것을 읽은 다른 사람들에게 유용 할 수 있습니다. –

+0

왜 SET IND = CASE ..., otst = CASE ...를 호출 할 수 없습니까? – StanislavL

답변

0

[2017년 4월 7일 11시 33분 17초]

UPDATE sales 
    SET ind = CASE id 
    WHEN 7795 THEN 759900 
    WHEN 7799 THEN 779900 
    ELSE ind END, 
    otst = case id 
    WHEN 7795 THEN 99 
    WHEN 7799 THEN 77 
    ELSE otst END 
WHERE id IN(7795, 7799) and recNo>1; 

[2017년 7월 4일 11시 33분 17초] 좋아. [7.4.2017 11:33:17] 3 행이 영향을받습니다.

고맙습니다. StanislavL