2017-04-02 112 views
0

我想使用DynamoDB創建表。我們不需要在DyamoDB中創建模式時指定所有列名稱,只需要指定主鍵(散列鍵+排序鍵[可選])。現在,如果我的表有一些其他屬性,我希望每個插入的項都存在 - 即,將NOT NULL約束添加到除鍵之外的其他屬性,那麼如何在DynamoDB中實現它?DynamoDB中的NOT NULL約束

回答

0

在DynamoDB上沒有明確提供的NotNull約束。但是,如果您使用的是DynamoDBMapper,則可以爲該屬性提供默認值

此外,DynamoDB API不允許添加具有空值的屬性(即空值或空字符串'')。 API確實會拋出異常。

換句話說,你不需要像RDBMS數據庫那樣定義一個約束。此外,沒有解決方法來覆蓋此功能。這個條件適用於所有的屬性,即你不能有NULL或空值的任何屬性。

實施例使用註釋來設置默認值: -

@DynamoDBAutoGeneratedDefault("default") 
@DynamoDBAttribute(attributeName = "name") 
public String getName() { 
    return name; 
} 

com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: 提供的AttributeValue是空的,必須只包含所支持的 之一數據類型(服務:AmazonDynamoDBv2;狀態碼:400; 錯誤代碼:ValidationException;請求ID: 1dd8288c-7151-43d3-83d0-dbb7842d705a)