Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ MySQL _ transakcje i primary key

Napisany przez: cfk 5.12.2019, 09:49:47

Cześć,
Potrzebuję zrobić primary key, który zawiera dwie kolumny np. numer_faktury i pozycja_faktury (AUTOINCREMENT). Wtedy silnikiem tabeli musi być MyISAM. Z drugiej strony MyISAM nie obsługuje transakcji, a tego tez potrzebuję. zeby mieć transakcję muszę mieć tabelę o silniku InnoDB (wtedy nie mogę zrobić indeksu, tak jak potrzebuję).
Czy jest jakiś sposób jak to obejść?

Napisany przez: mmmmmmm 5.12.2019, 13:59:46

Czary: http://sqlfiddle.com/#!9/f82f1f/2

Napisany przez: cfk 5.12.2019, 15:12:00

mając taką tabelę nie zrobię w pdo begin Transaction, coomit, rollback

Napisany przez: mmmmmmm 5.12.2019, 15:26:46

Pokazałem Ci, że da się zrobić tabelę z PK z dwóch pól, z których jedno jest autoincrement. I na dodatek Engine InnoDB.

Napisany przez: javafxdev 5.12.2019, 18:29:40

a czemu na pozycje_faktury musisz mieć autoincrementa?
- Jeżeli będziesz tego używał do wyświetlania w widoku elementów z faktury to wtedy będziesz miał dziury jak będzie rollback innej transakcji.
- Jeżeli nie będziesz tego używał do wyświetlania to lepiej zrobić tabelkę pozycje_faktury(id, faktura_id) oraz faktura(id, name, itd.) i zrobić one-to-many relację, a pozycje na fakturze wyliczać w locie w php - chyba że kolejnoś ma znaczenie ale to nadal możesz sortować po id.

Czemu nie tak?

Napisany przez: viking 5.12.2019, 18:32:24

Cytat(cfk @ 5.12.2019, 15:12:00 ) *
mając taką tabelę nie zrobię w pdo begin Transaction, coomit, rollback

http://sqlfiddle.com/#!9/ab48aa3/1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)