Въпрос за Insert
9 отговора
601 прегледа
Въпрос за Insert
Здравейте!
Интересува ме има ли варянт да се извършва едновременно инсъртване в повече от една таблица.
Става дума за MySQL (InnoDB таблици)
Ще съм ви благодарен за всякакви съвети или ако ме насочите къде мога да го прочета.
Интересува ме има ли варянт да се извършва едновременно инсъртване в повече от една таблица.
Става дума за MySQL (InnoDB таблици)
Ще съм ви благодарен за всякакви съвети или ако ме насочите къде мога да го прочета.
Re: Въпрос за Insert
ами например за да се избегне работа с mysql_insert_id. таест ако си вкарал вече ред в дадена таблица и ID-то на реда е записано в другата таблица за да се осъществява връзка между двете.
Имам придвид следното (Простете за аматьорския начин на изписване)
TABLE1
ID | COLOMN
TABLE2
ID2 | COLOMN2 | TABLE1_ID
ID=TABLE1_ID
Имам придвид следното (Простете за аматьорския начин на изписване)
TABLE1
ID | COLOMN
TABLE2
ID2 | COLOMN2 | TABLE1_ID
ID=TABLE1_ID
Re: Въпрос за Insert
До MySQL 3 със сигурност НЯМА НАЧИН освен с повече от една заявка, използвай MYSQL_INSERT_ID, в ръководството е описана, ако не греша, работата с тази заявка
Re: Въпрос за Insert
упс не видях че става дума за INNODB в този случай може и да греша, не съм работил с такива
Re: Въпрос за Insert
Защо не използваш Транзакции ?
The human knowledge belongs to the world.
The human knowledge belongs to the world.
Re: ?
И с какво транзакциите помагат в случая, че не схващам?
Въпросът е как да се подсигуриш, че стойността вмъкната в една таблица е същата като стойността в другата таблица.
Хайде обясни какво значение има дали се прави в транзакция или не?
Решението в MySQL е AUTO_INCREMENT колонка и LAST_INSERT_ID()
INSERT INTO t1 ...;
INSERT INTO t2 ... VALUES(LAST_INSERT_ID() ...);
с което се гарантира, че стойността вмъкната в t2 е точно тази която е генерирана автоматично за t1 в текущата сесия.
Работи независимо дали е в транзакция или не.
Няма опасност от конфликт и няма заключване.
salle.online.bg/sig
Въпросът е как да се подсигуриш, че стойността вмъкната в една таблица е същата като стойността в другата таблица.
Хайде обясни какво значение има дали се прави в транзакция или не?
Решението в MySQL е AUTO_INCREMENT колонка и LAST_INSERT_ID()
INSERT INTO t1 ...;
INSERT INTO t2 ... VALUES(LAST_INSERT_ID() ...);
с което се гарантира, че стойността вмъкната в t2 е точно тази която е генерирана автоматично за t1 в текущата сесия.
Работи независимо дали е в транзакция или не.
Няма опасност от конфликт и няма заключване.
salle.online.bg/sig
Re: ?
А възможно ли е да възникне проблем при insert'а ? Да се изпълни първия insert, но по някaква причина да не се изпълни втория ?
The human knowledge belongs to the world.
The human knowledge belongs to the world.
Re: ?
да аз лично съм виждал, но всичко зависи от естеството на скрипта, примерно ако стойностите които вкарваш при втория инсърт не са искейпнати както трябва