>source

좋은 방법이 있습니까?업데이트선택적 데이터로 요청하시겠습니까? 내가 지금 가지고있는 것은 :

  • 예시작성자

{
    "id": "203ede72-45af-4029-8055-e1c43656d42d",
    "first_name": "Willdon",
    "last_name": "Surgey"
},

  • 저자를 업데이트하는 포스트그레스 기능

--UPDATE
create or replace
function update_author(target_id uuid, i_first_name varchar(50), i_last_name varchar(50))
returns json
language plpgsql
as
$$
declare inserted_author authors%rowtype;
begin
     update authors a
     set first_name= i_first_name,
          last_name= i_last_name
     where a.id= target_id
     returning * into inserted_author;
return row_to_json(inserted_author);
end;
$$;

이제 내가 하면놓다에 요청/저자/203ede72-45af-4029-8055-e1c43656d42d몸으로

{
    "last_name": "Smith"
}

된다

{
    "id": "203ede72-45af-4029-8055-e1c43656d42d",
    "first_name": "",
    "last_name": "Smith"
}

유지하고 싶습니다.이름을 텐데공급된다

first_name= coalesce(i_first_name, first_name) 은 한 가지 방법이지만 Oracle과 마찬가지로 미리 쓰기 로그에 i_first_name이 null일 때 first_name에 현재 값이 할당된다는 사실을 추가할 것이라고 생각합니다. 이는 낭비입니다. 이 낭비를 피하려는 완벽 경향에 따라 i_first_name에 따라 두 가지 다른 업데이트 문 중 하나를 실행합니다.

Jeff Holt2021-09-24 04:06:11

불행히도 i_first_name을 빈 문자열로 가정하고 빈 문자열을 할당합니다.

thecashewtrader2021-09-24 04:06:11

그런 다음 사용 사례. null과 빈 문자열 사이에는 차이가 있으므로 둘 다에 대해 수행하려는 작업을 열거할 수 있습니다.

Jeff Holt2021-09-24 04:06:11
  • 답변 # 1

    내가 한 일은 처음에 전체 쿼리를작가데이터베이스에서 개체를 가져온 다음 사용골랑'NS언마샬속성을 선택적으로 변경한 다음 전체 데이터를 postgres 함수에 전달했습니다.

    참고: 이 해결 방법을 사용하는 경우 사용자가 다음과 같은 쿼리로 데이터베이스를 손상시킬 수 없도록 일종의 유효성 검사를 수행해야 합니다.PUT /author/f3ef41a5-fe1e-4180-92bf-8b87e879211d

    {
        "id": "g3ef41a5-fe1e-4180-92bf-8b87e879211d",
        "last_name": "Smith"
    }
    

    UUID의 첫 글자가 변경되었음을 알 수 있습니다. 이로 인해 문제가 발생할 수 있습니다.

  • 답변 # 2

    내가 한 일은 처음에 전체 쿼리를작가데이터베이스에서 개체를 가져온 다음 사용골랑'NS언마샬속성을 선택적으로 변경한 다음 전체 데이터를 postgres 함수에 전달했습니다.

    참고: 이 해결 방법을 사용하는 경우 사용자가 다음과 같은 쿼리로 데이터베이스를 손상시킬 수 없도록 일종의 유효성 검사를 수행해야 합니다.PUT /author/f3ef41a5-fe1e-4180-92bf-8b87e879211d

    {
        "id": "g3ef41a5-fe1e-4180-92bf-8b87e879211d",
        "last_name": "Smith"
    }
    

    UUID의 첫 글자가 변경되었음을 알 수 있습니다. 이로 인해 문제가 발생할 수 있습니다.

  • 이전 mysql PHP에서 마지막 두 행 선택
  • 다음 MySQL에서 중복 행 삭제, 최대 행 오류 발생