Форум программистов, компьютерный форум, киберфорум
Наши страницы
Oracle
Войти
Регистрация
Восстановить пароль
 
OkVa
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 5
#1

Добавление строк в таблицу - Oracle

21.03.2014, 16:12. Просмотров 1093. Ответов 9
Метки нет (Все метки)

Здравствуйте, помогите решить следующую проблему:

Даны таблицы:

SQL
1
2
3
CREATE TABLE IDs(id NUMBER PRIMARY KEY);
CREATE TABLE Codes(code NUMBER PRIMARY KEY, id NUMBER);
ALTER TABLE Codes ADD CONSTRAINT fk_Codes$id FOREIGN KEY(id) REFERENCES IDs(id);
нужно составить один запрос, добавляющий в поле id таблицы Codes все значения столбца
id, которые есть в таблице IDs, но еще нет в таблице Codes.

По сути проблема в том, что таблица IDs имеет всего одну строку, когда Codes - 2. Поэтому возникла проблема с запросом INSERT INTO: в поле code по умолчанию вставляются пустые значения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2014, 16:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Добавление строк в таблицу (Oracle):

Добавление массива данных в таблицу
ORACLE 9.2 для Win. В БД ORACLE существует несколько таблиц. Ежедневно...

Добавление строк с измененным столбцом
Всем привет! Помогите реализовать следующее: Nomer cex mat priz 1. ...

Добавление данных в таблицу
Здравствуйте, подскажите пожалуйста sql запрос который будет выполнять перенос...

Добавление в dbf таблицу полей
Доброго времени суток! Нужна очень помощь!!! Необходимо в существующую dbf...

Как вставить в таблицу несколько строк?
Друзья! То есть у меня никак не выходит. Вот такими командами я их вставляю и...

Данные по служащим некоторого учреждения сведены в таблицу "Служащие". Приведите таблицу к 1, 2, 3 нормальной

9
turbanoff
Эксперт Java
4008 / 3743 / 739
Регистрация: 18.05.2010
Сообщений: 9,323
Записей в блоге: 11
Завершенные тесты: 1
21.03.2014, 20:56 #2
Цитата Сообщение от OkVa Посмотреть сообщение
в поле code по умолчанию вставляются пустые значения.
А какие значение должны вставляться? и откуда их брать?
0
OkVa
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 5
22.03.2014, 10:31  [ТС] #3
В этом и есть проблема: какие и откуда брать значения для вставки в поле Code. Однозначно это числа больше нуля, да ещё и уникальные значения для поля Code.
0
turbanoff
Эксперт Java
4008 / 3743 / 739
Регистрация: 18.05.2010
Сообщений: 9,323
Записей в блоге: 11
Завершенные тесты: 1
22.03.2014, 13:11 #4
OkVa, Обычно PK в Oracle генерируеют с помощью SEQUENCE-а. Вас этот вариант устроит?
0
OkVa
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 5
22.03.2014, 14:15  [ТС] #5
Боюсь, что данные условия менять я не могу. Вообще говоря решение может содержать особенности любого представления SQL, ,будь то SQL server или Oracle, хотя Oracle в приоритете
0
Dukovsky
0 / 0 / 0
Регистрация: 09.12.2008
Сообщений: 9
24.03.2014, 14:05 #6
MySQL
1
Insert into CODES (ID) SELECT ID FROM IDS WHERE ID NOT IN(SELECT ID FROM CODES)
как то так наверно
0
OkVa
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 5
24.03.2014, 14:27  [ТС] #7
Это решение не подойдёт. Этот запрос вставит в поле Сode таблицы Codes значения NULL, что непременно вызовет ошибку.
0
Dukovsky
0 / 0 / 0
Регистрация: 09.12.2008
Сообщений: 9
24.03.2014, 14:31 #8
на случай если данные не удаляются:

MySQL
1
Insert into CODES (ID,code) SELECT ID, (Select count(*)+1 from CODES) FROM IDS WHERE ID NOT IN(SELECT ID FROM CODES)
если не подходит то тогда RTFM курить и желательно вдумчиво
0
OkVa
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 5
24.03.2014, 15:10  [ТС] #9
Почти то, что надо. Однако, вставляемые таким образом значениями в поле code, иногда могут пересекаться с уже существующими. Ваше решение подходит для добавления одной записи, но не для выборки
0
Grossmeister
Модератор
3356 / 2414 / 402
Регистрация: 21.01.2011
Сообщений: 10,644
24.03.2014, 15:19 #10
В Oracle только использование Sequence (или ее ручная реализация) может гарантировать уникальность.
Все варианты с MAX + 1, COUNT +1 и проч. годятся только для однопользовательской работы. При многопользовательской работе с данной таблицей постоянно будут возникать коллизии (дублирование номеров).
1
24.03.2014, 15:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2014, 15:19
Привет! Вот еще темы с решениями:

Добавление Строк В Таблицу.
Доброго дня! При создании документа на событии PostOpen пишу : <div...

Добавление строк в таблицу
Всем привет! У меня есть таблица, состоящая из двух строк. Верхняя...

Добавление строк в таблицу
Ребят, нужно по условию добавлять строки в нужные места. Никак не соображу как....

Добавление строк в таблицу
Доброго времени суток! Я новичок в этом деле, так что сильно не пинайте. Я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru