免費工具

DynamoDB 保留字檢查器

貼上你的屬性名稱以查看哪些與 DynamoDB 的保留字衝突,並複製一個安全地為它們加上別名的 ExpressionAttributeNames 對應表。

屬性名稱

每行輸入一個屬性名稱(逗號與空格也可以)。每一個都會不分大小寫,對照完整的 DynamoDB 保留字清單進行檢查。

6 個名稱中有 4 個是保留字,必須加上別名。
  • name#name保留字
  • status#status保留字
  • timestamp#timestamp保留字
  • userId可用
  • count#count保留字
  • email可用
ExpressionAttributeNames
{
  "#name": "name",
  "#status": "status",
  "#timestamp": "timestamp",
  "#count": "count"
}

在你的運算式中以每個保留字名稱的 # 別名來引用它,並將這個對應表作為 ExpressionAttributeNames 傳入。

@dynotable/dynamodb-reserved-words 是這個工具背後的開源(MIT)函式庫。

為何保留字很重要

DynamoDB 維護著一長串保留關鍵字,它不會接受把這些字當作運算式中裸露的屬性名稱。日常用的名稱 — name、status、size、count、timestamp、year — 都在清單上。直接引用其中之一,請求就會以 ValidationException 失敗,而且通常是在執行時而非在程式碼審查時。

解決方法是運算式屬性名稱:一個代替真實名稱的 # 佔位符,搭配一個 ExpressionAttributeNames 對應表。這個檢查器會不分大小寫地將你的名稱與完整清單比對,並自動為保留字建立該對應表,讓你可以直接把它貼進 GetItem、Query、Update 或 Delete 請求中。

加別名是個能避開一整類錯誤的小習慣 — 運算式屬性名稱與值 深入說明這些佔位符,而 Expression Builder 會在你建構時為你為每個名稱加上別名。

完整的 DynamoDB 保留字清單

全部 573 個保留字,完全比照 AWS 公布的清單。比對不分大小寫,因此 `size`、`Size` 與 `SIZE` 皆屬於保留字。清單上的任何屬性名稱,都必須先以運算式屬性名稱加上別名,才能在運算式中使用。

A
ABORTABSOLUTEACTIONADDAFTERAGENTAGGREGATEALLALLOCATEALTERANALYZEANDANYARCHIVEAREARRAYASASCASCIIASENSITIVEASSERTIONASYMMETRICATATOMICATTACHATTRIBUTEAUTHAUTHORIZATIONAUTHORIZEAUTOAVG
B
BACKBACKUPBASEBATCHBEFOREBEGINBETWEENBIGINTBINARYBITBLOBBLOCKBOOLEANBOTHBREADTHBUCKETBULKBYBYTE
C
CALLCALLEDCALLINGCAPACITYCASCADECASCADEDCASECASTCATALOGCHARCHARACTERCHECKCLASSCLOBCLOSECLUSTERCLUSTEREDCLUSTERINGCLUSTERSCOALESCECOLLATECOLLATIONCOLLECTIONCOLUMNCOLUMNSCOMBINECOMMENTCOMMITCOMPACTCOMPILECOMPRESSCONDITIONCONFLICTCONNECTCONNECTIONCONSISTENCYCONSISTENTCONSTRAINTCONSTRAINTSCONSTRUCTORCONSUMEDCONTINUECONVERTCOPYCORRESPONDINGCOUNTCOUNTERCREATECROSSCUBECURRENTCURSORCYCLE
D
DATADATABASEDATEDATETIMEDAYDEALLOCATEDECDECIMALDECLAREDEFAULTDEFERRABLEDEFERREDDEFINEDEFINEDDEFINITIONDELETEDELIMITEDDEPTHDEREFDESCDESCRIBEDESCRIPTORDETACHDETERMINISTICDIAGNOSTICSDIRECTORIESDISABLEDISCONNECTDISTINCTDISTRIBUTEDODOMAINDOUBLEDROPDUMPDURATIONDYNAMIC
E
EACHELEMENTELSEELSEIFEMPTYENABLEENDEQUALEQUALSERRORESCAPEESCAPEDEVALEVALUATEEXCEEDEDEXCEPTEXCEPTIONEXCEPTIONSEXCLUSIVEEXECEXECUTEEXISTSEXITEXPLAINEXPLODEEXPORTEXPRESSIONEXTENDEDEXTERNALEXTRACT
F
FAILFALSEFAMILYFETCHFIELDSFILEFILTERFILTERINGFINALFINISHFIRSTFIXEDFLATTERNFLOATFORFORCEFOREIGNFORMATFORWARDFOUNDFREEFROMFULLFUNCTIONFUNCTIONS
G
GENERALGENERATEGETGLOBGLOBALGOGOTOGRANTGREATERGROUPGROUPING
H
HANDLERHASHHAVEHAVINGHEAPHIDDENHOLDHOUR
I
IDENTIFIEDIDENTITYIFIGNOREIMMEDIATEIMPORTININCLUDINGINCLUSIVEINCREMENTINCREMENTALINDEXINDEXEDINDEXESINDICATORINFINITEINITIALLYINLINEINNERINNTERINOUTINPUTINSENSITIVEINSERTINSTEADINTINTEGERINTERSECTINTERVALINTOINVALIDATEISISOLATIONITEMITEMSITERATE
J
JOIN
K
KEYKEYS
L
LAGLANGUAGELARGELASTLATERALLEADLEADINGLEAVELEFTLENGTHLESSLEVELLIKELIMITLIMITEDLINESLISTLOADLOCALLOCALTIMELOCALTIMESTAMPLOCATIONLOCATORLOCKLOCKSLOGLOGEDLONGLOOPLOWER
M
MAPMATCHMATERIALIZEDMAXMAXLENMEMBERMERGEMETHODMETRICSMINMINUSMINUTEMISSINGMODMODEMODIFIESMODIFYMODULEMONTHMULTIMULTISET
N
NAMENAMESNATIONALNATURALNCHARNCLOBNEWNEXTNONONENOTNULLNULLIFNUMBERNUMERIC
O
OBJECTOFOFFLINEOFFSETOLDONONLINEONLYOPAQUEOPENOPERATOROPTIONORORDERORDINALITYOTHEROTHERSOUTOUTEROUTPUTOVEROVERLAPSOVERRIDEOWNER
P
PADPARALLELPARAMETERPARAMETERSPARTIALPARTITIONPARTITIONEDPARTITIONSPATHPERCENTPERCENTILEPERMISSIONPERMISSIONSPIPEPIPELINEDPLANPOOLPOSITIONPRECISIONPREPAREPRESERVEPRIMARYPRIORPRIVATEPRIVILEGESPROCEDUREPROCESSEDPROJECTPROJECTIONPROPERTYPROVISIONINGPUBLICPUT
Q
QUERYQUITQUORUM
R
RAISERANDOMRANGERANKRAWREADREADSREALREBUILDRECORDRECURSIVEREDUCEREFREFERENCEREFERENCESREFERENCINGREGEXPREGIONREINDEXRELATIVERELEASEREMAINDERRENAMEREPEATREPLACEREQUESTRESETRESIGNALRESOURCERESPONSERESTORERESTRICTRESULTRETURNRETURNINGRETURNSREVERSEREVOKERIGHTROLEROLESROLLBACKROLLUPROUTINEROWROWSRULERULES
S
SAMPLESATISFIESSAVESAVEPOINTSCANSCHEMASCOPESCROLLSEARCHSECONDSECTIONSEGMENTSEGMENTSSELECTSELFSEMISENSITIVESEPARATESEQUENCESERIALIZABLESESSIONSETSETSSHARDSHARESHAREDSHORTSHOWSIGNALSIMILARSIZESKEWEDSMALLINTSNAPSHOTSOMESOURCESPACESPACESSPARSESPECIFICSPECIFICTYPESPLITSQLSQLCODESQLERRORSQLEXCEPTIONSQLSTATESQLWARNINGSTARTSTATESTATICSTATUSSTORAGESTORESTOREDSTREAMSTRINGSTRUCTSTYLESUBSUBMULTISETSUBPARTITIONSUBSTRINGSUBTYPESUMSUPERSYMMETRICSYNONYMSYSTEM
T
TABLETABLESAMPLETEMPTEMPORARYTERMINATEDTEXTTHANTHENTHROUGHPUTTIMETIMESTAMPTIMEZONETINYINTTOTOKENTOTALTOUCHTRAILINGTRANSACTIONTRANSFORMTRANSLATETRANSLATIONTREATTRIGGERTRIMTRUETRUNCATETTLTUPLETYPE
U
UNDERUNDOUNIONUNIQUEUNITUNKNOWNUNLOGGEDUNNESTUNPROCESSEDUNSIGNEDUNTILUPDATEUPPERURLUSAGEUSEUSERUSERSUSINGUUID
V
VACUUMVALUEVALUEDVALUESVARCHARVARIABLEVARIANCEVARINTVARYINGVIEWVIEWSVIRTUALVOID
W
WAITWHENWHENEVERWHEREWHILEWINDOWWITHWITHINWITHOUTWORKWRAPPEDWRITE
Y
YEAR
Z
ZONE

逐字擷取自 AWS「DynamoDB 中的保留字」參考文件。將你的屬性名稱貼進上方的檢查器,即可為你產生別名與 ExpressionAttributeNames 對應表。

常見問題

什麼是 DynamoDB 保留字?

DynamoDB 保留了一大串關鍵字 — 大約 573 個 — 這些字無法在運算式中直接當作屬性名稱使用。像 name、status、timestamp、size 與 count 這類名稱全都是保留字。如果你在投影、filter、條件或更新運算式中直接引用其中之一,DynamoDB 會回傳一個 ValidationException,並帶有「Attribute name is a reserved keyword」的訊息。

我要如何把保留字當作屬性名稱使用?

用運算式屬性名稱為它加上別名 — 一個以 # 開頭並對應到真實名稱的佔位符。例如,在你的運算式中引用 #name,並傳入 ExpressionAttributeNames 為 { "#name": "name" }。本工具會為你輸入的每個保留字名稱產生該對應表,隨時可貼進你的請求中。

保留字清單區分大小寫嗎?

不區分。DynamoDB 的保留字清單不區分大小寫,因此 Name、name 與 NAME 都會被視為保留字 NAME。這個檢查器會不分大小寫地比對,與 DynamoDB 完全一致。

我必須為每個屬性名稱都加上別名嗎?

只有保留字需要別名,但許多團隊習慣為每個名稱都加上別名,這樣就永遠不會遇到這個錯誤,而且運算式讀起來也一致。為非保留字加上別名一律是安全的。本工具會明確標示出你的哪些名稱是保留字,讓你自行決定。

不必透過主控台就能操作 DynamoDB

一款快速的 DynamoDB 桌面用戶端,可執行 DynamoDB 無法執行的真正 SQL — JOINs、GROUP BY、聚合 — 並支援視覺化編輯與使用你自己的 Bedrock 金鑰的 AI 代理。

30 天免費試用,無需信用卡 — 之後為無時間限制的免費方案。