当前位置: 首页 > 面试题库 >

SQL域错误:列不存在,设置为默认

公沈义
2023-03-14
问题内容

我创建了一个域:

CREATE DOMAIN public."POSTAL_CODE"
  AS character(5)
  NOT NULL;

我试图设置默认值:

ALTER DOMAIN public."POSTAL_CODE"
SET DEFAULT "00000";

但是得到了错误:

错误:列“ 00000”不存在

然后我设法使用设置了默认值DEFAULT 00000,但是我认为它被强制转换INTEGER0而不是00000。我尝试过character(5)[]
{'0','0','0','0','0'}但也没有成功。

如何获取默认值作为文本而不出现错误?

我使用了PostgreSQL。


问题答案:

在SQL中,双引号" 用于引用名为“选择”的列或表

例如,SQL中的字符串常量是由单引号(')界定的任意字符序列'This is a string'。因此,这与双引号字符(")不同

因此,您必须使用单引号,如下所示

select * from test where old_code = '220088242'

所以你的情况应该像下面这样

ALTER DOMAIN public."POSTAL_CODE"
    SET DEFAULT '00000';


 类似资料:
  • 我已经能够将PostgreSQL链接到Java。我已经能够显示表中的所有记录,但我无法执行删除操作。 下面是我的代码: 请注意,MAC是一个字符串字段,用大写字母书写。表中确实存在此字段。 我得到的错误是: 严重:错误:“Mac”列不存在

  • 问题内容: 有没有一种方法可以设置查询的模式,以便在其余查询中我可以仅按表名引用表,而无需在表名前添加表名? 例如,我想做这样的事情: 与此相反: 问题答案: 一个快速的谷歌把我指向了这个页面。它说明从sql server 2005开始,您可以使用ALTER USER语句设置用户的默认架构。不幸的是,这意味着您将对其进行永久更改,因此,如果需要在模式之间进行切换,则每次执行存储过程或一批语句时都需

  • 问题内容: 我正在运行MySql Server 5.7.11,这句话: 是 不是 工作。给出错误: 但是以下内容: 正常工作 。 DATE的情况相同。 作为 附带说明 ,它在MySQL文档中有所提及: DATE类型用于具有日期部分但没有时间部分的值。MySQL检索并以’YYYY-MM-DD’格式显示DATE值。支持的范围是“ 1000-01-01”至“ 9999-12-31”。 即使他们也说: 无

  • :“查询执行失败。原因: SQL错误[42P01]:错误:关系”temp_table“存在。 不存在” 我想创建一个临时表来临时存储一些记录。

  • 问题内容: 可以为JPA中的列设置默认值吗?如果使用注释,如何做到这一点? 问题答案: 实际上,在JPA中是可能的,尽管使用批注的属性有些小小的改动,例如:

  • 我尝试使用liquibase使用liquibase“addDefaultValue”语法将我的列的默认值设置为null: 但是向myTable插入新行显示默认值仍然设置为“false”,就像以前一样。所以liquibase更改集不起作用。 如何设置列默认值为null与liquibase?