Въпрос за Insert

9 отговора 601 прегледа
#1

Въпрос за Insert

Здравейте!

Интересува ме има ли варянт да се извършва едновременно инсъртване в повече от една таблица.
Става дума за MySQL (InnoDB таблици)

Ще съм ви благодарен за всякакви съвети или ако ме насочите къде мога да го прочета.

Отговор
в отговор на neuk #2

Re: Въпрос за Insert

ЗАЩО би било необходимо???

Отговор
в отговор на Йopдaн #3

Re: Въпрос за Insert

ами например за да се избегне работа с mysql_insert_id. таест ако си вкарал вече ред в дадена таблица и ID-то на реда е записано в другата таблица за да се осъществява връзка между двете.

Имам придвид следното (Простете за аматьорския начин на изписване)

TABLE1

ID | COLOMN

TABLE2

ID2 | COLOMN2 | TABLE1_ID


ID=TABLE1_ID

Отговор
в отговор на neuk #4

Re: Въпрос за Insert

До MySQL 3 със сигурност НЯМА НАЧИН освен с повече от една заявка, използвай MYSQL_INSERT_ID, в ръководството е описана, ако не греша, работата с тази заявка

Отговор
в отговор на neuk #5

Re: Въпрос за Insert

упс не видях че става дума за INNODB в този случай може и да греша, не съм работил с такива

Отговор
в отговор на new #6

Re: Въпрос за Insert

Защо не използваш Транзакции ?

The human knowledge belongs to the world.
Отговор
в отговор на Matrix_N #7

Re: ?

И с какво транзакциите помагат в случая, че не схващам?

Въпросът е как да се подсигуриш, че стойността вмъкната в една таблица е същата като стойността в другата таблица.

Хайде обясни какво значение има дали се прави в транзакция или не?

Решението в MySQL е AUTO_INCREMENT колонка и LAST_INSERT_ID()

INSERT INTO t1 ...;

INSERT INTO t2 ... VALUES(LAST_INSERT_ID() ...);

с което се гарантира, че стойността вмъкната в t2 е точно тази която е генерирана автоматично за t1 в текущата сесия.

Работи независимо дали е в транзакция или не.
Няма опасност от конфликт и няма заключване.

salle.online.bg/sig
Отговор
в отговор на salle #8

Re: ?

А възможно ли е да възникне проблем при insert'а ? Да се изпълни първия insert, но по някaква причина да не се изпълни втория ?

The human knowledge belongs to the world.
Отговор
в отговор на Matrix_N #9

Re: ?

да аз лично съм виждал, но всичко зависи от естеството на скрипта, примерно ако стойностите които вкарваш при втория инсърт не са искейпнати както трябва

Отговор
в отговор на new #10

Re: ?

или ако някой подъл тип между двата insert-а изключи сървъра

Отговор