您如何修改默认值以接受 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的主要内容,如果未能解决你的问题,请参考以下文章
如何从将服务扩展到 MainActivity 的 LocationServices 活动传递纬度 n 经度值以在屏幕上显示它们而不是 Log.d