Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 9 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
MySQL- autoincrement aby každý rok začal  od 1

Registrovaný: 01.09.14
Prihlásený: 28.11.15
Príspevky: 22
Témy: 6
Príspevok NapísalOffline : 06.04.2015 9:22

Zdravím,

riešim problém kde mám dve tabuľky výrobok a skúšku1. Na prepojenie je použitá tkzv. generalizácia čiže primárny id atribút tab. skúška1 získa cudzí kľúč od tab. výrobok a dedí jej atribúty. Avšak chcela som aby pole výrobok ešte obsahoval jeden atribút ktorý by pripočítaval číslo výrobku (nie id) a po začatí ďalšieho roku začal počítať odznova. Na internete som našla riešenie ako toho dosiahnuť:
Kód:
CREATE TABLE vyrobok(
  year_id INT(11) NOT NULL, -- combination of year
  id INT(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (yearmonth_id, id)
)
ENGINE = MYISAM;


takto to v poriadku funguje avšak keď chcem tento kód spojiť s tabuľkou skúška1.. resp. prepojiť cudzím kľúčom napr. id.. potom mi to nefunguje a id sa pripočítava postupne aj keď dám iný rok. Preto som skôr hľadala riešenie že by som pridala ďalší stĺpec auto_increment ale mi to vypisuje chybu že nemôžem mať dva atribúty auto_increment a vypisuje mi chybu že sa nedá prepojiť s cudzím kľúčom tabuľka skúška1. Som bezradná, možno riešením by bolo vytvoriť ďalšiu tabuľku z ktorej by som tieto čísla volala ale chcela som to nejakou jednoduchšou cestou.

Ďakujem za všetky odpovede!


Offline

Správca fóra
Správca fóra
MySQL- autoincrement aby každý rok začal  od 1

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 08.04.2015 14:43

Z uvedenej struktury tabulky nevyplyva ziadny mechanizmus navysovania a resetovania cisla vyrobku v zavislosti od roku. Tuto funkcionalitu riesis na urovni aplikacie alebo databazy? A este podotazka: Na co chces to cislovanie pouzit?







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 08.04.2015 15:03

To je vlastnosť MyISAM a BDB tabuliek ak sa auto_increment použije na sekundárny kľúč.

Každopádne netuším, ako by malo fungovať to prepájanie s inou tabuľkou, keďže id v takom prípade nie je jedinečné (a vlastne netuším, čo presne sa pokúša Mirusena urobiť). :)


Offline

Správca fóra
Správca fóra
MySQL- autoincrement aby každý rok začal  od 1

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 08.04.2015 15:25

Ano, to mi je jasne, len ta struktura nesedi s textom. Pouziva year_id, potom zasa yearmonth_id, chce mat na cislovanie ine pole ako id, ale nic take v rieseni nema... Popis je chaoticky, ze sa v tom ani diva svina nevyzna.







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
MySQL- autoincrement aby každý rok začal  od 1

Registrovaný: 01.09.14
Prihlásený: 28.11.15
Príspevky: 22
Témy: 6
Príspevok Napísal autor témyOffline : 09.04.2015 0:17

Tento kód som našla na internete z tohoto linku: http://stackoverflow.com/questions/7902132/auto-increment-every-month-start-from-1-in-mysql-with-php a pôvodne tam bolo navyšovanie sa id každý mesiac , ja som to zmenila na každý rok a zabudla som to tu v primárnom klúči prepísať :roll: . V podstate takto to funguje že každý rok sa mi začne pripočítať id od 1.

Môj problém aby ste pochopili: mám viac tabuliek "skúška1 - skúška n" , vzhľadom na to že mali všetky skúšky veľa rovnakých atribútov, aby som ich nemusela zbytočne vpisovať vytvorila som si tabulku "vyrobok" kde sú všetky spoločné atribúty skúšok a vytvorila som reláciu (generalizáciu), čiže po namodelovaní v datamodelery výsledný sql kód vyzeral tak, že skúškam pridal primárny kĺúč ID_vyrobok, ktorý sa stal zároven cudzím kľúčom k tabulke výrobok(ID_vyrobok). Len chcela som že by som si pridala do výrobku atribút napr. to year_id ako auto_increment a po roku by sa zresetovalo a pripočítavalo od 1 (ide o skúšky výrobkov kde pre každý rok sa začína id skúšiek od 1, do výrobku chcem pridať tento atribút lebo je to hlavná tabulka odkiaľ berú tabulky skúšky atribúty).

Avšak keď vytvorím tabulku výrobok aj s tým year_id (ako som uviedla v kóde) všetko funguje... každý rok ked zadám, resetne sa autoincrement a začne opäť od 1 avšak keď som chcela toto všetko prepojiť s mojím výsledným sql kódom z datamodeleru tak to nefungovalo. Chcela som vytvoriť tabulku vyrobok ktorá by mala atribúty
Kód:
CREATE TABLE vyrobok(
ID_VK int(11) NOT NULL AUTO_INCREMENT,
  year_id INT(11) NOT NULL, -- combination of year
  id INT(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (ID_VK,year_id, id)
)ENGINE = MYISAM;


a vytvoriť tabulku skúška:

Kód:
CREATE TABLE skuska1(
ID_VK int(11) NOT NULL primary key,
foreign key(ID_VK) references by vyrobok(ID_VK)
 
)


lenže tu mi vyskakuje vždy chyba že nemôžu byť 2 autoincrement atrubuty v tabulke, a hlavne nedá sa mi prepojiť cudzí kluč ...


Ospravedlňujem sa že je to chaotické, hádam ste pochopili čo myslím :D


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 09.04.2015 10:41

Nerobí sa to tak, že v tej tabuľke vyrobok nebudeš mať to ID_VK, a pri tabuľke skuska1 pri foreign_key použiješ (year_id, id)? (a teda bude musieť mat dva stĺpce, do ktorých sa to year_id a id uloží)


Offline

Užívateľ
Užívateľ
MySQL- autoincrement aby každý rok začal  od 1

Registrovaný: 01.09.14
Prihlásený: 28.11.15
Príspevky: 22
Témy: 6
Príspevok Napísal autor témyOffline : 09.04.2015 11:42

Tak som to skúšala ale potom sa mi už year_id po každom novom roku neresetuje na 1 ale pokračuje normálne auto_increment ďalej.


Offline

Správca fóra
Správca fóra
MySQL- autoincrement aby každý rok začal  od 1

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 09.04.2015 12:51

Tak pouzi na resetovanie trigger, ak chces mat nastaveny auto_increment na iny stlpec







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 09.04.2015 13:21

Čo má spoločné zvyšovanie hodnoty stĺpca id v tabuľke vyrobok s tým, že sa stĺpce použijú na prepojenie s inou tabuľkou? (pretože veľmi pochybujem, že by sa auto_increment správal inak, keď sú stĺpce použité ako kľúče pri inej tabuľke a inak, keď nie sú)

Ako tam vlastne pridávaš nové záznamy?

// Spojený príspevok Štv 09.04.15 14:01

Takže som nainštaloval MySQL a správa sa to presne, ako som čakal (a teda id sa zvyšuje nezávisle pre každý rok a je úplne jedno, či je to prepojené s inou tabuľkou, alebo nie). Takže čo presne s tým robíš?


Odpovedať na tému [ Príspevkov: 9 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Intel každý rok nový socket?

v Intel - Integrated Electronics

8

735

17.12.2020 11:54

michalesku Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Záloha (Backup) Webu + MySQL Každý deň?

v Ostatné

2

701

13.02.2010 16:05

juho Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. V USA je kazdy rok utajenych cca 5000 patentov. V UK 3x viac

v Novinky

2

446

01.04.2012 14:09

delong Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zistenie hodnoty autoincrement

v Databázy

3

656

07.11.2010 18:21

pogo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PC začal sekať

v Ostatné

16

1934

12.03.2019 16:46

4040 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Počítač začal sekať

v Ostatné

8

514

17.04.2015 13:28

tatko Tom Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zacal hucat chladic

v Intel - Integrated Electronics

5

395

08.01.2015 20:52

tarezni Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Microsoft začal sponzorovať Apache

v Novinky

1

596

28.07.2008 22:08

Mir Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zdroj začal vydávať zvuky.

v PC skrinky a zdroje

11

436

09.01.2020 9:49

Semp Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kazdy system trha

v AMD - Advanced Micro Devices

7

683

19.09.2012 9:00

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Internet začal prechádzať na IPv6

v Novinky

2

710

08.06.2012 2:08

andymc Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Notebook zacal vydavat vysoky ton

v Notebooky a netbooky

2

351

18.12.2019 22:22

Melouch Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Microsoft začal ponúkať Outlook samostatne

v Novinky

6

772

10.02.2008 12:27

prkyyynko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Windows8.1 začal robiť hlúposti

v Operačné systémy Microsoft

0

481

29.11.2014 11:37

kemperik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Anketa - Každý iba raz...

v JavaScript, VBScript, Ajax

15

1013

02.06.2010 19:23

camo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Epson L3160 začal tlačiť na červeno

v Externé zariadenia

3

684

03.12.2021 16:56

havrilko Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra