2017-01-03 12 views
0

列の値を更新して設定する方法値がnullの場合は?その列にNULL値を持つすべての行の既存の列に値を設定する

例: テーブルProductsには10行あります。私はその行に値nullがその特定の列にある場合quantityという列にすべての行の値'0'を設定したいと思います。

私が試した:

ALTER TABLE Products ADD DEFAULT '0' FOR quantity 
WITH VALUES; 

を...しかし、それはその列に0null値を更新しませんでした。あなたが列を追加するとき

+2

: 'アップデート製品は、数量= 0を設定する量はNULL' –

+0

される場合、既存の行を更新するUPDATEが必要 - :既存の行の場合

は、次のコードを使用します。 – jarlh

+0

@ahmedab​​delqader、ありがとう。それはうまくいった。 –

答えて

1

Alter Table新しい行を行うれます。既存の行の場合

Update Products set quantity = 0 where quantity IS NULL. 
0
update Products 
    set quantity=0 
    where quantity is null 
1

WITH VALUES句が適用され、既存のものを変更しないとき。これは、変更された列に行にまだNULLが含まれている理由を説明しています。

また、列がまだNULL可能である(NOT NULL制約を追加していない)ので、NULLは完全に有効です(DBMSがNULL値をデフォルト値に変更する理由はありません)。もちろん、すべての既存のNULLを明示的に更新することもできます。

update products set quantity = 0 where quantity is null; 

ただし、後でNULL数量のレコードを再度追加することはできます。ですから、最初のレコードを更新し、すべてのNULLを禁止するように列を変更することもできます。

alter table products alter column quantity integer not null; 
+0

これは素晴らしい答えでした。私はなぜ私のデフォルトの値が行に現れないのかが不思議でしたが、nullが許されていたからです。 –

関連する問題