Skip to main content

DML로 레코드 수정

학습 목표

이 유닛을 완료하면 다음을 수행할 수 있습니다.

  • Developer Console에서 쿼리 그리드를 사용하여 데이터 레코드를 직접 조작하는 방법을 이해할 수 있습니다.
  • DML을 사용하여 데이터베이스에 데이터를 유지하는 방법을 이해할 수 있습니다.
  • DML 명령을 작성하는 두 가지 방법을 식별할 수 있습니다.

Developer Console에서 데이터 관리

지금까지 Developer Console에서 SOQL 및 SOSL을 사용하여 데이터를 쿼리하는 방법을 살펴보았습니다. Developer Console에 표시되는 쿼리 결과 창은 결과를 표시할 뿐만 아니라, 쿼리 그리드로도 작동한다는 사실을 눈치채지 못하셨을 수 있습니다. 결과 그리드를 클릭하고 그리드 아래의 버튼을 사용하여 데이터를 삽입, 업데이트 또는 삭제할 수 있습니다.

한 번 시도해보겠습니다.

  1. Setup(설정)에서 여러분의 이름 > Developer Console을 선택하여 Developer Console을 엽니다.
  2. Developer Console의 하단 창에서 Query Editor(쿼리 편집기) 탭을 클릭합니다.
  3. 기존 코드를 삭제하고 다음 코드조각을 삽입합니다.
    SELECT Id, Name, Industry FROM Account
    
  4. Execute(실행)를 클릭합니다. 쿼리 결과에는 조직의 모든 계정과 함께 총 행 수가 표시됩니다. 이 값을 기억해두세요.
  5. Insert Row(행 삽입)를 클릭합니다. 그리드 상단에 새 행이 추가됩니다.
  6. 이름과 산업을 입력하려면 새 행을 두 번 클릭합니다. 단, ID 값은 공백으로 둡니다.
  7. Save Rows(행 저장)를 클릭합니다. Id 열에 값이 자동으로 표시됩니다. ID는 기본 키이고 해당 값은 시스템에서 생성됩니다. 또한 표시된 총 행 수는 여전히 ​​원래 값입니다.
  8. Refresh Grid(그리드 새로고침)를 클릭합니다. 총 행 수가 1씩 증가하는 것을 보셨나요? 아주 쓸만한 도구입니다.

개발자는 때때로 데이터를 실시간으로 관리해야 할 필요성을 느끼며, 저희는 그러한 작업을 최대한 쉽게 만들고 싶었습니다. 이 방식이 INSERT, UPDATE 또는 DELETE 문을 입력하는 것보다 확실히 낫다고 생각합니다.

쿼리 결과의 오른쪽 하단에 있는 버튼을 사용하여 Salesforce의 레코드에 직접 액세스할 수도 있습니다. 지금 한 번 시도해보세요.

DML은 무엇인가요?

첫 번째 유닛에서 배운 것처럼 Salesforce는 SOQL을 사용하여 데이터를 쿼리하지만, 데이터 관리에는 DML을 대신 사용합니다.

.NET 개발자는 주로 SQL을 사용하여 데이터를 쿼리하고 관리하므로, 다른 언어를 사용하는 것이 이상하게 느껴질 수 있습니다. 하지만 Salesforce에서는 SQL 명령보다 DML 명령으로 작업하는 것이 훨씬 쉽다는 것을 알게 될 것입니다.

Force.com은 매우 긴밀하게 통합되어 있으므로, 데이터 소스 관리에 대한 걱정 없이 데이터를 바로 조작할 수 있습니다. 이는 DML로 작업하는 것이 편리한 쉬운 이유 중 하나입니다.

DML 문

아래 표에서 사용 가능한 DML 문을 확인해보세요. 여러분에게 익숙한 문도 일부 있으며, 여러분이 예상하는 대로 작동합니다. 자세한 내용은 개발자 가이드를 참조하시기 바랍니다.

설명
insert 새 레코드를 삽입합니다.
update 기존 레코드를 업데이트합니다.
upsert 단일 문 내에서 새 레코드를 생성하고 레코드를 업데이트하는 특수 작업입니다. 지정된 필드를 사용하여 기존 개체의 존재를 확인하며, 필드가 지정되지 않은 경우 ID 필드를 사용합니다.
delete 기존 레코드를 삭제합니다.
undelete 휴지통에서 하나 이상의 기존 레코드를 복원합니다.
merge 동일한 개체 유형의 레코드를 최대 3개까지 레코드 중 하나로 병합할 수 있는 또 다른 특수 작업입니다. 그런 다음 다른 레코드를 삭제하고 모든 관련 레코드의 상위 항목을 재지정합니다.

DML을 실행하는 두 가지 방법

Apex에서는 두 가지 방식으로 DML 문을 실행할 수 있습니다.

  • 문 자체 사용: 계정 및 연락처 데이터를 삽입한 SOSL 유닛에서 이 방식을 이미 살펴보았습니다. 이 방식이 제일 간편합니다. 기억나지 않는다면 SOSL 유닛에서 가져온 아래의 일부 코드를 살펴보세요. 삽입 DML 문을 사용하여 단일 계정이 삽입되었습니다.
    // Add Account
    Account acct = new Account(
        Name='Test Account',
        Phone='(225)555-8989',
        NumberOfEmployees=10,
        BillingCity='Baton Rouge');
    insert acct;
    
  • Database 클래스 메서드 사용: Database 클래스 메서드를 사용하면 선택적 allOrNone 매개변수에 액세스하여 작업의 부분적 성공 여부를 지정할 수 있습니다. 이 매개변수가 false로 설정된 경우 일부 레코드 집합에서 오류가 발생하면 성공한 레코드가 커밋되고, 실패한 레코드에 대해 오류가 반환됩니다. 또한 부분 성공 옵션에서는 예외가 발생하지 않습니다. 예를 들어 다음은 allOrNone 매개변수가 false로 설정된 계정을 만들고 배열에 성공 또는 실패 정보를 반환하는 경우의 모습입니다.
    // Add Account
    Account acct = new Account(
        Name='Test Account',
        Phone='(225)555-8989',
        NumberOfEmployees=10,
        BillingCity='Baton Rouge');
    Database.SaveResult[] results = Database.insert(acct, false);
    

추가 정보

기본적으로 allOrNone 매개변수는 true로, 이는 Database 메서드가 DML 문과 동일하게 동작하고 오류가 발생할 경우 예외를 출력한다는 것을 의미합니다. 자세한 내용은 공식 문서를 참조하세요.

DML 전문가가 되고 싶다면 Apex 기본 및 데이터베이스 모듈을 완료하세요. 여기에는 부분적으로 성공한 레코드와 관련 레코드를 삽입하는 방법에 대한 자세한 정보가 나와 있습니다.

리소스

Salesforce 도움말에서 Trailhead 피드백을 공유하세요.

Trailhead에 관한 여러분의 의견에 귀 기울이겠습니다. 이제 Salesforce 도움말 사이트에서 언제든지 새로운 피드백 양식을 작성할 수 있습니다.

자세히 알아보기 의견 공유하기