Go'da DynamoDB DeleteItem (AWS SDK v2)

DeleteItem, tek bir öğeyi tam birincil anahtarıyla kaldırır. Go v2 için AWS SDK'da bir dynamodb.DeleteItemInput ile client.DeleteItem'i çağırırsınız; types.ReturnValueAllOld ile yanıt, gerçekten bir şeyin silinip silinmediğini size söyler.

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)
	}
}

Açıklama

  • Keyher birincil anahtar özniteliğini içermelidir: basit bir anahtar için yalnızca bölüm anahtarı ya da bileşik bir anahtar için bölüm ve sıralama anahtarı.
  • Silme idempotenttir — var olmayan bir anahtarı silmek yine de bir başarıdır (hata yok). ReturnValues: types.ReturnValueAllOld ile silinen öğe out.Attributes içinde geri döner; bir boş eşleme orada hiçbir şey olmadığı anlamına gelir.
  • DeleteItem için ReturnValues yalnızca NONE (varsayılan) ve ALL_OLD'u desteklerALL_NEW/UPDATED_* seçenekleri UpdateItem'a aittir.
  • Koşullu silme — bir ConditionExpression ekleyin (örneğin var olmayan bir öğede başarısız olmak için attribute_exists(Artist) ya da bir değer koruması); başarısız bir koşul, errors.As ile eşleştirilen bir *types.ConditionalCheckFailedException döndürür.
  • DeleteItem, çağrı başına bir öğe kaldırır. "Tümünü sil" API'si yoktur — bir tabloyu boşaltmak için Scan ile anahtarlar üzerinde yineleyin ve silmeleri toplu hâle getirin ya da tabloyu düşürüp yeniden oluşturun.

Görsel olarak yapın

Silmeyi bir koşulla mı koruyorsunuz? DynamoDB Expression Builder, ConditionExpression'ı ve ad/değer eşlemelerini sizin için bir araya getirir.

Bir grafik arayüzden (GUI) öğe silmek için — satırları seçin, onaylayın, bitti; üretilen kod bir tık uzakta — DynoTable'ı indirin.

İlgili örnekler

References

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Console olmadan DynamoDB ile çalışın

DynoTable, DynamoDB için hızlı bir masaüstü istemcisidir — tablolara göz atın, SQL tarzı sorgular çalıştırın ve item'ları yerel olarak düzenleyin.