我有一个用户表,其中有许多下载列,我如何将其初始化为非常新的行为0。我只希望在触发另一个表中的事件时更改它。

最佳答案

您可以使用0语句中的默认语句将其设置为create table

create table . . .
    numdownloads int default 0


创建表后,也可以使用alter table语句执行此操作。

但是,您实际上并不需要这样做。在触发器中,您可以执行以下操作:

update user
    set numdownloads = coalesce(numdownloads, 0) + 1


增加值。

提取数据时,可以使用coalesce()NULL转换为0

select . . . , coalesce(numdownloads, 0) as numdownloads
from user


编辑:

要阻止用户插入任何值,请使用插入触发器。或者,仅在需要时计算该值,而不是将其存储为计数器。

09-27 19:04