21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
lamič
Profil
Ahoj, chci se poradit ohledně generování resp. přidávání automatických čísel do sloupce v tabulce čísla objednávek. Měl jsem za to, že stačí nadefinovat určité číslo(resp. datum) a k tomu číslu přičíst třeba 1, které jsem chtěl udělat pomocí databáze a autoincrementu. Nicméně jsem zjistil, že když už mám v tabulce sloupec s Primarním klíčem a autoincrementem na id_objednávky. Nelze mi upravit sloupec cislo_objednavky aby i zde byl autoincrement. Databáze napíše #1063 - Incorrect column specifier for column 'cislo_objednavky' .Budu rád za odpověď. Předem děkuji
juriad
Profil
Můžeš použít TRIGGER BEFORE INSERT pro upravení kládaných dat než se skutečně vloží.
lamič
Profil
Trigger jsem ještě nikdy nezkoušel, to mám nějak nastavit v DB nebo ve skriptu?
Alphard
Profil
Pro inspiraci možná Auto increment v každé skupině (rok) od začátku. Jestli chcete jít pro každé datum od začátku, je to přesně to, co asi hledáte.
lamič
Profil
Alphard:
jak jsem si to tak zběžně pročetl, nemyslím si, že je to přesně to co hledám... Spíše nyní uvažuji, že bych si vytvořil skript který by fungoval nějak takto.. před tím, než se objednávka odešle s aktuálním datumem (vkládaným funkcí NOW() ) vyber aktuální datum, přiřaď jej do sloupce čísla objednávky ve tvaru 20150402 a přčti k němu číslo 1 takže konečná hodnota bude v tabulce 201504021, což by mohlo způsobit problém s možností, že si více zákazníků koupí v jeden den více zboží. Proto bych předělal nastavení tabulky z DATE na DATETIME a tím pádem by to vypadalo takto 201504021751 plus 1 potom se již duplicity mají malou možnost se vyskytnout.. uvažuji nad tím správně nebo je efektivnější to dělat těmi triggery?

Nebo další možnost. Vložit co čísla objednávky její datum ve formátu YYYYMMDD+id obj. a přidat k němu id objednávky příklad 20150402100 (100 je id obj.)... tímpádem by žádné duplicity nemohli vzniknout, páč id objednávky je jedinečné a datum by mohl zůstat jak je YYYYMMDD
Keeehi
Profil
lamič:
Pokud bys chtěl mít čísla objednávek ve tvaru YYYYMMDD+id tak tuto informaci nemusíš nikam ukládat. Tato informace se dá přece vždy dopočítat z id objednávky a data kdy byla uskuečněná.

Proto bych předělal nastavení tabulky z DATE na DATETIME
Ale fuj, na to ten datový typ není. Navíc tímto způsobem máš jen 86 400 "unikátních" identifiátorů za den. Chápu že pro tvoje účely o může stačit, ovšem velké eshopy by s tím měli problém.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0