|
|
|
INSERT в разные таблицы
|
|||
|---|---|---|---|
|
#18+
Добрый вечер, есть две таблицы. Employye id_e(PK)name_esurname_e1JillBlack2FredGreen Developer id_d(PK)speciality_d1Java2C++ Где в первой и второй таблице, id_e и id_d это PK для таблиц и один и тот же айдишник для работника одновременно, при этом айдишники уникальыне, генеряться базой данных. просто вторая таблица "девелопер" расширяет..не знаю..наследует что ли=) (если в sql есть такое понятие) таблицу Employee. можно ли составить один запрос, который одновременно вносит данные в две таблицы? И,главное, как это сделать) т.к мои запросы со всяческими комбинациями JOIN'ов выглядели довольно странно и не работали. или это можно сделать только добавив сначала данные в Employee а потом вытащив id_e забить данные в Developer? Заранее огромное спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 21:45:26 |
|
||
|
INSERT в разные таблицы
|
|||
|---|---|---|---|
|
#18+
alex021, Если я правильно понял что вы хотите. Одним запросом нельзя. Для таких вещей есть транзакции. В рамках одной транзакции: вставить в одну таблицу, воспользовавшись LAST_INSERT_ID() получить сгенеренный айдишник и использовать его для вставки в другую таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 22:38:34 |
|
||
|
INSERT в разные таблицы
|
|||
|---|---|---|---|
|
#18+
chabapok, спасибо, да думаю правильно поняли..я и сам в сторону транзакции смотреть начал..только беда с этим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 23:33:26 |
|
||
|
INSERT в разные таблицы
|
|||
|---|---|---|---|
|
#18+
еще раз спасибо зп подсказку хоршая вещь) попробовал сделать транзакцию вот что получилось) но одновременно не получилось Код: plsql 1. 2. 3. 4. 5. 6. 7. эта комманда у меня не работает! выкидывает ошибку, что то типо: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Но! если закомментить 1 и 2 строку, то есть BEGIN TRANSACTION и COMMIT TRANSACTION , то все прекрасно заполняется! что это такое? и почему так происходит? как исправить? почему без транзакции все хорошо работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 01:39:14 |
|
||
|
INSERT в разные таблицы
|
|||
|---|---|---|---|
|
#18+
как это INSERT INTO Developer(id_dr,speciality_d) VALUES (@lastID,'SQL'); сочетается с этим Где в первой и второй таблице, id_e и id_d это PK для таблиц и один и тот же айдишник для работника одновременно, при этом айдишники уникальыне, генеряться базой данных . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 06:40:34 |
|
||
|
INSERT в разные таблицы
|
|||
|---|---|---|---|
|
#18+
вадя, извиняюсь за неточность. генерируются только в таблице Employee. В таблице Devrloper - это протосто PK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 10:09:53 |
|
||
|
INSERT в разные таблицы
|
|||
|---|---|---|---|
|
#18+
в табл Developer id_d просто привязан к id_e из таблицы Employee ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 11:32:50 |
|
||
|
INSERT в разные таблицы
|
|||
|---|---|---|---|
|
#18+
alex021, ну написано же все. Duplicate entry означает, что в таблице уже есть строка с числом 30 в этой колонке почему она там есть - это уже вопрос к вам. Когда-то кто-то вставил. syntax error по той причине, что во фразе "COMMIT TRANSACTION" второе слово лишнее. Просто commit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 12:29:45 |
|
||
|
INSERT в разные таблицы
|
|||
|---|---|---|---|
|
#18+
эмм..да там ошибки не умные) вроде теперь "взлетело" доку я так понял мне скидывали чтобы над синтаксисом поработал, спасибо! еще в доке я нашле вот такую комманду Код: sql 1. может быть ее тоже надо испольщовать? теоретически во время моего добавления любой дркгой поток может вклиниться и получится каша.. или сам факт того что у меня Код: sql 1. 2. 3. таблицы заблокированны? или я опять глупый вопрос задаю) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 13:50:21 |
|
||
|
INSERT в разные таблицы
|
|||
|---|---|---|---|
|
#18+
alex021, если у вас таблицы формата Aria или MyISAM, то они транзакции вообще не поддерживают, и поэтому их надо лочить. если InnoDb и совместимые, то использовать транзакции. там еще есть такая штука уровни изоляции транзакций, но тут в двух словах не обьяснишь - это уже гуглите и читайте самостоятельно. Но по идее по умолчанию там нормально настроено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 14:04:21 |
|
||
|
INSERT в разные таблицы
|
|||
|---|---|---|---|
|
#18+
chabapok, честно говоря без понятия какие у меня таблицы ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 14:13:18 |
|
||
|
INSERT в разные таблицы
|
|||
|---|---|---|---|
|
#18+
стоит workbench 6.0 CE. в любом случае, огромное спасибо за советы) буду разбираться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 14:14:43 |
|
||
|
INSERT в разные таблицы
|
|||
|---|---|---|---|
|
#18+
alex021, show create table имя_таблицы; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 14:35:13 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=47&tid=1834964]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 332ms |

| 0 / 0 |
