[ 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 | 6

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 | 51
Bydlisko: Bratislava

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 | 0

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 | 51
Bydlisko: Bratislava

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 | 6
Napísal autor témyOffline : 09.04.2015 0:17 | MySQL- autoincrement aby každý rok začal od 1

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 | 0

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 | 6
Napísal autor témyOffline : 09.04.2015 11:42 | MySQL- autoincrement aby každý rok začal od 1

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 | 51
Bydlisko: Bratislava

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 | 0

Č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íš?


 [ Príspevkov: 9 ] 


MySQL- autoincrement aby každý rok začal od 1



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

915

17.12.2020 11:54

michalesku

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

Záloha (Backup) Webu + MySQL Každý deň?

v Ostatné

2

759

13.02.2010 16:05

juho

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

498

01.04.2012 14:09

delong

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

zistenie hodnoty autoincrement

v Databázy

3

697

07.11.2010 18:21

pogo

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

Počítač začal sekať

v Ostatné

8

587

17.04.2015 13:28

tatko Tom

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

Zacal hucat chladic

v Intel - Integrated Electronics

5

425

08.01.2015 20:52

tarezni

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

PC začal sekať

v Ostatné

16

2094

12.03.2019 16:46

4040

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

Microsoft začal sponzorovať Apache

v Novinky

1

638

28.07.2008 22:08

Mir

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

Zdroj začal vydávať zvuky.

v PC skrinky a zdroje

11

489

09.01.2020 9:49

Semp

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

Kazdy system trha

v AMD - Advanced Micro Devices

7

793

19.09.2012 9:00

shiro

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

Notebook zacal vydavat vysoky ton

v Notebooky a netbooky

2

401

18.12.2019 22:22

Melouch

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

512

29.11.2014 11:37

kemperik

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

Internet začal prechádzať na IPv6

v Novinky

2

828

08.06.2012 2:08

andymc

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

Microsoft začal ponúkať Outlook samostatne

v Novinky

6

830

10.02.2008 12:27

prkyyynko

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

Anketa - Každý iba raz...

v JavaScript, VBScript, Ajax

15

1124

02.06.2010 19:23

camo

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

Epson L3160 začal tlačiť na červeno

v Externé zariadenia

3

1009

03.12.2021 16:56

havrilko



© 2005 - 2025 PCforum, edited by JanoF