如何设置列的默认值?

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

【讨论】:

以上是关于如何设置列的默认值?的主要内容,如果未能解决你的问题,请参考以下文章

如何将列的默认值设置为今天的日期? [复制]

设置点列的默认值

如何在 ORACLE TABLE 上重置列的默认值

如何将sqlalchemy中列的默认值设置为关系中列的值?

mysql里的表怎么改列的默认值

SQL:将所有没有默认值的列的默认值设置为 NULL