【问题标题】:Cannot Alter Column in Squirell SQL Client无法更改 Squirrel SQL 客户端中的列
【发布时间】:2015-10-14 12:31:55
【问题描述】:

我正在尝试更改我的 ingres DB 中的列以扩展列的大小。

我正在运行的查询是

ALTER TABLE test_table ALTER COLUMN address varchar(100) NOT NULL

这会出错

错误:ALTER TABLE:ALTER COLUMN 上的属性更改无效

SQLState:42000 错误代码:3859

有人知道我为什么会收到此错误吗?我检查了更改表的语法。

【问题讨论】:

  • 试试:ALTER TABLE test_table MODIFY address varchar(100) NOT NULL
  • 不走运。 "错误:第 2 行,'MODIFY' 的语法错误。
  • 我猜你现在有一个 varchar(
  • 是的,现在是 varchar 50,“is_nullable”列设置为 YES
  • 所以只需删除 NOT NULL 就可以了

标签: sql database database-schema ingres


【解决方案1】:

您的数据中可能有NULL。首先更新您的表格(设置为空字符串或您想要的任何值):

LiveDemo

UPDATE test_table
SET address = ''         -- or another value indicating missing addres like 'none'
WHERE address IS NULL;

然后试试:

ALTER TABLE test_table ALTER COLUMN address varchar(100) NOT NULL;

编辑:

如果您不想强制执行NOT NULL,请使用:

LiveDemo2

ALTER TABLE test_table ALTER COLUMN address varchar(100);

【讨论】:

  • 我刚刚从原始查询中删除了 NOT NULL 并且它有效吗?
  • @gio10245 关键是您的数据中有 NULL。当您 ALTER TABLE 并设置 NOT NULL 时,由于 NULL 无法强制执行。更新表然后改变它,它应该可以工作
  • 但是现在只需从原始查询中删除 NOT NULL 就可以了,那么为什么我需要这样做呢?
  • @gio10245 问题是您是否想要包含NULL 的地址?请参阅我提供的演示。
  • 我想做的只是扩大尺寸,我不确定是否需要“NOT NULL”。如果需要,此列中的值可以为 NULL,所以我删除了 NOT NULL 并且它可以工作?
猜你喜欢
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多