transakcje i primary key |
transakcje i primary key |
5.12.2019, 09:49:47
Post
#1
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 1 Dołączył: 8.01.2005 Skąd: Warszawa Ostrzeżenie: (0%) |
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ść? |
|
|
5.12.2019, 13:59:46
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
|
|
|
5.12.2019, 15:12:00
Post
#3
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 1 Dołączył: 8.01.2005 Skąd: Warszawa Ostrzeżenie: (0%) |
mając taką tabelę nie zrobię w pdo begin Transaction, coomit, rollback
|
|
|
5.12.2019, 15:26:46
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
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.
|
|
|
5.12.2019, 18:29:40
Post
#5
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 7 Dołączył: 27.10.2015 Ostrzeżenie: (0%) |
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? |
|
|
5.12.2019, 18:32:24
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
mając taką tabelę nie zrobię w pdo begin Transaction, coomit, rollback http://sqlfiddle.com/#!9/ab48aa3/1 -------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 15:02 |