DynamoDB DeleteItem di Go (AWS SDK v2)

DeleteItem menghapus satu item berdasarkan primary key lengkap-nya. Di AWS SDK for Go v2 Anda memanggil client.DeleteItem dengan dynamodb.DeleteItemInput; dengan types.ReturnValueAllOld, response memberi tahu Anda apakah ada sesuatu yang benar-benar terhapus.

Code

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/service/dynamodb"
	"github.com/aws/aws-sdk-go-v2/service/dynamodb/types"
)

func main() {
	ctx := context.TODO()
	cfg, err := config.LoadDefaultConfig(ctx, config.WithRegion("us-east-1"))
	if err != nil {
		log.Fatalf("load config: %v", err)
	}
	client := dynamodb.NewFromConfig(cfg)

	out, err := client.DeleteItem(ctx, &dynamodb.DeleteItemInput{
		TableName: aws.String("Music"),
		Key: map[string]types.AttributeValue{
			"Artist":    &types.AttributeValueMemberS{Value: "Arturo Sandoval"},
			"SongTitle": &types.AttributeValueMemberS{Value: "Cubano Chant"},
		},
		ReturnValues: types.ReturnValueAllOld,
	})
	if err != nil {
		log.Fatalf("delete item: %v", err)
	}

	if len(out.Attributes) == 0 {
		fmt.Println("No item with that key existed")
	} else {
		fmt.Println("Deleted:", out.Attributes)
	}
}

Penjelasan

  • Key — harus menyertakan setiap atribut primary key: partition key saja untuk key sederhana, atau partition dan sort key untuk key komposit.
  • Delete bersifat idempoten — menghapus key yang tidak ada tetap merupakan keberhasilan (tanpa error). Dengan ReturnValues: types.ReturnValueAllOld, item yang terhapus kembali di out.Attributes; map kosong berarti tidak ada apa-apa di sana.
  • ReturnValues untuk DeleteItem hanya mendukung NONE (default) dan ALL_OLD — opsi ALL_NEW/UPDATED_* milik UpdateItem.
  • Conditional delete — tambahkan ConditionExpression (mis. attribute_exists(Artist) untuk gagal pada item yang hilang, atau sebuah value guard); kondisi yang gagal mengembalikan *types.ConditionalCheckFailedException, dicocokkan dengan errors.As.
  • DeleteItem menghapus satu item per panggilan. Tidak ada API "delete all" — untuk mengosongkan tabel, iterasi key dengan Scan dan batch penghapusannya, atau drop dan buat ulang tabel.

Lakukan secara visual

Menjaga penghapusan dengan sebuah kondisi? DynamoDB Expression Builder menyusun ConditionExpression dan map name/value untuk Anda.

Untuk menghapus item dari GUI — pilih baris, konfirmasi, selesai, dengan kode yang dihasilkan hanya satu klik jauhnya — unduh DynoTable.

Contoh terkait

References

Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.

Bekerja dengan DynamoDB tanpa Console

DynoTable adalah klien desktop yang cepat untuk DynamoDB — jelajahi tabel, jalankan query gaya SQL, dan edit Item secara lokal.