您如何修改默认值以接受 Y 或 N 而不仅仅是 SQL 中的 Y

Posted

技术标签:

【中文标题】您如何修改默认值以接受 Y 或 N 而不仅仅是 SQL 中的 Y【英文标题】:How do you modify the default to accept Y or N not just Y in SQL 【发布时间】:2015-05-03 01:00:36 【问题描述】:

我正在尝试修改现有表的列中的默认值,但它不起作用。我在其他网站上进行了研究,但它不起作用。

ALTER TABLE STOREREPS
MODIFY (COMM DEFAULT ('Y', 'N'));

我的默认设置为 Y

我正在使用 Oracle 11g SQL Developer。

【问题讨论】:

以后,请将您正在使用的 DBMS 添加到您的问题中,最好从一开始就添加,但至少在出现提示时添加。我更喜欢在标签和问题正文中看到它,但至少将它包含在标签中。尽管有一个 SQL 标准,但没有一个 DBMS 100% 地实现该标准,而且语法上经常有变体。通常,这是因为 DBMS 在标准化之前就实现了该功能,并且标准语法与之前的实现有所不同,但向后兼容意味着开发人员被他们的非标准语法卡住了。 下次我会记住这一点。谢谢。 【参考方案1】:

您只能有一个默认值。当您在表中插入一行并且不为列指定值时,将使用默认值。但是,您可以添加 CHECK 约束以确保仅允许 'Y''N';这可能就是你正在寻找的。​​p>

根据每个 DBMS(现在标识为 Oracle)的变化,您可以写一些东西 like:

ALTER TABLE STOREREPS
    MODIFY (COMM DEFAULT 'Y'),
    ADD CONSTRAINT check_comm_y_n CHECK (COMM IN ('Y', 'N'));

在 CREATE TABLE 语句中,可能是:

CREATE TABLE StoreReps
(
    …
    Comm CHAR(1) NOT NULL DEFAULT 'Y'
         CONSTRAINT check_comm_y_n CHECK (Comm IN ('Y', 'N')),
    …
);

但确切的语法因 DBMS 而异。

【讨论】:

感谢您的帮助,@Jonathan,因为我已经设置了默认值,MODIFY 部分不起作用。谢谢你的帮助。帮了大忙。 我想知道这一点,因此推诿。至少子句在很大程度上是独立的,因此省略 MODIFY 并只使用 ADD CONSTRAINT 并不难。

以上是关于您如何修改默认值以接受 Y 或 N 而不仅仅是 SQL 中的 Y的主要内容,如果未能解决你的问题,请参考以下文章

再谈Vim substitute替换命令

如何从将服务扩展到 MainActivity 的 LocationServices 活动传递纬度 n 经度值以在屏幕上显示它们而不是 Log.d

如何更改杰克逊以检测 POJO 中的所有字段,而不仅仅是公共字段?

加载 DataTable 时使用默认列值以避免 Null

如何在C#中接受或拒绝 Excel 中的修订

如何获取 xcode 默认图像