【问题标题】:How to convert MySQL query to equivalent Oracle sql Query如何将 MySQL 查询转换为等效的 Oracle sql 查询
【发布时间】:2020-07-09 21:55:19
【问题描述】:

我想将下面的 MY SQL 查询转换为 Oracle SQL 查询,有人可以帮忙吗?

instructor 表下面是父实体,instructor_detail 表是子实体。

CREATE TABLE `instructor_detail` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `youtube_channel` varchar(128) DEFAULT NULL,
  `hobby` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

CREATE TABLE `instructor` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(45) DEFAULT NULL,
  `last_name` varchar(45) DEFAULT NULL,
  `email` varchar(45) DEFAULT NULL,
  `instructor_detail_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_DETAIL_idx` (`instructor_detail_id`),
  CONSTRAINT `FK_DETAIL` FOREIGN KEY (`instructor_detail_id`) REFERENCES `instructor_detail` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

我在下面尝试过,但没有工作

    CREATE TABLE instructor (
      id numeric(11) NOT NULL PRIMARY KEY,
      first_name varchar(45) DEFAULT NULL,
      last_name varchar(45) DEFAULT NULL,
      email varchar(45) DEFAULT NULL,
      instructor_detail_id  numeric(10) not null
    );

    CREATE TABLE instructor_detail (
      id NUMERIC(11) NOT NULL PRIMARY KEY,
      youtube_channel varchar(128) DEFAULT NULL,
      hobby varchar(45) DEFAULT NULL,
      CONSTRAINT fk_instructor
        FOREIGN KEY (instructor_detail_id)
        REFERENCES instructor(instructor_detail_id)
    );

error : Error report -
ORA-00904: "INSTRUCTOR_DETAIL_ID": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

赞赏

【问题讨论】:

    标签: mysql sql oracle11g


    【解决方案1】:

    Oracle 11 不支持自动生成的主键,因此您需要一个触发器。还有一些关于级联约束的不同规则。

    除此之外:

    CREATE TABLE instructor_detail (
      id int PRIMARY KEY,
      youtube_channel varchar2(128) DEFAULT NULL,
      hobby varchar2(45) DEFAULT NULL
    ) ;
    
    CREATE TABLE instructor (
      id int NOT NULL PRIMARY KEY,
      first_name varchar2(45) DEFAULT NULL,
      last_name varchar2(45) DEFAULT NULL,
      email varchar2(45) DEFAULT NULL,
      instructor_detail_id int,
      CONSTRAINT FK_DETAIL FOREIGN KEY (instructor_detail_id) REFERENCES instructor_detail (id) 
    ) ;
    
    CREATE INDEX idx_instructor_instruct_detail_id ON instructor(instructor_detail_id);
    

    Here 是一个 dbfiddle。

    【讨论】:

    • 非常感谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 2019-07-29
    • 2018-11-01
    • 2013-07-10
    • 2015-04-21
    • 2015-10-03
    相关资源
    最近更新 更多