我有这个电话:
ALTER TABLE mbk_user ADD login_attempts int;
我想将其更新为:
ALTER TABLE mbk_user ADD login_attempts int NOT NULL;
有没有办法在一个 sql 语句(一个 upsert)中执行“添加或修改”,或者我需要先删除列然后再添加它?我想理想地避免 drop 语句。
我有这个电话:
ALTER TABLE mbk_user ADD login_attempts int;
我想将其更新为:
ALTER TABLE mbk_user ADD login_attempts int NOT NULL;
有没有办法在一个 sql 语句(一个 upsert)中执行“添加或修改”,或者我需要先删除列然后再添加它?我想理想地避免 drop 语句。
如果我正确理解您的问题,您只想使该列不为空。这可以通过
ALTER <column_name>
子命令完成显然,这只适用于该列中没有 NULL 值的情况。
你不能在一个电话中做到这一点。(为什么需要?)您可以在脚本中执行此操作,而无需知道或检查该列是否已存在或当前不是 NULL。
您可以按此顺序对表运行这两个语句,无论该列是否存在以及它是否为 NOT NULL。结果将是该列将存在并且不为 NULL。
如果该列尚不存在,则将其添加到第一个语句中,然后在第二个语句中设置为 NOT NULL,它已经存在,因此没有其他任何事情发生。
如果该列已经存在,第一个语句尝试添加它,但什么也不做,因为该列已经存在(您可能会收到一个无害的警告),然后在第二个语句中将其设置为 NOT NULL。如果它已经不是 NULL,则什么都不会发生。