Как преобразовать MySQL запрос в эквивалент Oracle sql Запрос - PullRequest
1 голос
/ 29 марта 2020

Я хочу преобразовать ниже МОЙ SQL запрос в Oracle SQL запрос, может кто-нибудь помочь?

Ниже таблица инструктора является родительской сущностью, а таблица 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:

Оценил

1 Ответ

0 голосов
/ 29 марта 2020

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);

Здесь - это db <> скрипка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...