【问题标题】:SQL alter table works in MySQL but not in OracleSQL alter table 在 MySQL 中有效,但在 Oracle 中无效
【发布时间】:2014-05-28 13:54:09
【问题描述】:

我已经创建了一个表users

create table users (
id int,
name varchar(40)
);

现在我想要name 的默认值

此查询在 MYSQL 中有效,但在 Oracle 数据库 11g XE 中无效

alter table users alter name set default 'user';

谁能解释一下为什么?

【问题讨论】:

  • "谁能解释原因" - 因为 Oracle 与 MySQL 不同:docs.oracle.com/cd/E11882_01/server.112/e41084/…
  • 这是一个 SQL-99 标准查询。你的意思是 Oracle 不关心 ANSI 标准。
  • MySQL 也不关心 SQL-99 标准(实际上比 Oracle 少)

标签: mysql sql oracle11g


【解决方案1】:

我认为正确的查询应该是这样的:

ALTER TABLE users MODIFY name VARCHAR(40) NOT NULL DEFAULT 'user';

【讨论】:

    【解决方案2】:

    向现有列添加默认值的语法在 Oracle 中有所不同,即:

    alter table users
    modify (name default 'user');
    

    SqlFiddle here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      相关资源
      最近更新 更多