如何设置列的默认值?
Posted
技术标签:
【中文标题】如何设置列的默认值?【英文标题】:How do I set the default value for a column? 【发布时间】:2009-11-13 17:53:57 【问题描述】:请注意下表。我想将新创建的BEST_SELLER
列的默认值设置为"N"
。
我该怎么做呢?
Create Table Mystery
(Book_Code Char(4) Primary Key,
Title Varchar2(40),
Publisher_Code Char(2),
Price Number(4,2))
【问题讨论】:
IMO 为了后代,这个问题的标题应该改变以反映野兽的本质。 您使用的是什么 SQL Server? SQL PLUS。我已经创建了列 BEST_SELLER... 这不是对您问题的直接回答,但是看着您的桌子的名称(神秘),我感到不舒服,您可能对不同种类的书有不同的桌子。这很可能会让你在路上头疼。更好的方法可能是一张带有 GenreCode 列的表。 【参考方案1】:基本mysql Alter Table 命令
如果该列不存在:
alter table Mystery add column BEST_SELLER enum('N','Y') default 'N';
如果列存在:
alter table Mystery alter column BEST_SELLER set default 'N';
【讨论】:
【参考方案2】:由于您对我的第一个答案的回复,我正在添加第二个答案。此答案适用于:
-
您正在使用 Oracle,并且
您已经创建了表,因此您需要使用“ALTER TABLE”语法。
请查收以下内容:
alter table
mystery
modify
BEST_SELLER char(1) DEFAULT 'N'
请将类型 char(1)
修改为该列的实际值。运行此查询以更正表后,您将需要发出第二个查询来更新现有行,例如:
UPDATE
mystery
SET
BEST_SELLER = 'N'
WHERE
BEST_SELLER = ''
OR BEST_SELLER IS NULL
希望这会有所帮助。
【讨论】:
然后会填充现有行吗? 一开始什么都没有,你需要发出一个通用的更新查询,比如:UPDATE mystery SET BEST_SELLER = 'N' WHERE BEST_SELLER = '' OR BEST_SELLER IS NULL
(这是基于我对 MySQL 语法的了解,虽然我认为它的通用性足以携带到 oracle),但是在这种情况下,默认值应该可以保证您的未来。
如果还没有建表怎么办?【参考方案3】:
如果您在创建表后添加列,您可以使用 alter 语句执行类似的操作。
alter
【讨论】:
以上是关于如何设置列的默认值?的主要内容,如果未能解决你的问题,请参考以下文章