Forum Delphi.cz

Databáze => Ostatní DB => Téma založeno: Stanislav Hruška 10-06-2016, 12:05:05

Název: SQLite - zmena štruktúry tabuľky vedie k chybe
Přispěvatel: Stanislav Hruška 10-06-2016, 12:05:05
Kód: [Vybrat]
CREATE TABLE COMPETITIONS (
    IDCOMPETITIONS INTEGER    NOT NULL
                              PRIMARY KEY AUTOINCREMENT,
    TITLE          TEXT (100) NOT NULL,
    YEARS          INTEGER    NOT NULL,
    MAXMEMBERS     INTEGER    NOT NULL,
    SERIALNUMBER   INTEGER    DEFAULT (0)
                              NOT NULL
 
);
Akýkoľvek pokus o zmenu štruktúry vedie k chybe:
Citace
Could not commit table structure. Error message: FOREIGN KEY constraint failed
Ja na to nevidím dôvod. Samozrejme, že IDCOMPETITIONS  je až v jednej tabuľke použitý v definícii foreign key.
Název: Re:SQLite - zmena štruktúry tabuľky vedie k chybe
Přispěvatel: Stanislav Hruška 10-06-2016, 12:15:13
Tak som zrušil ten foreign key a potom to zbehlo.
Název: Re:SQLite - zmena štruktúry tabuľky vedie k chybe
Přispěvatel: geby 10-06-2016, 22:14:52
1. Nejak nechapu, cemu se divis? Proc by ti to melo dovolit menit deklaraci tabulky, na kterou ma jina tabulka navazany foreign key? To je snad v poradku, ze to to nedovoli, ne?

2. Deklarace te tabulky neni pro sqlite uplne v poradku. U prvni polozky staci jen integer primary key. Neni to ale skutecmy sloupec, ale jen interni odkaz na rowid interni b-tree struktury. Ten je jaksi prirozene not null, a zaroven prirozene jej nemohou mit dva zaznamy stejne.

Zkratka, se sqlite je dobre pracovat trochu jinak. Neni to nejaka obycejna nahrada za oracle, firebirdy a tak. Ma sva zjednoduseni, a jejich znalost dokaze vymacknout z databaze maximum. To ale neni mozne pres ty vsemozne univerzalni frameworky, ktere se naopak chybejici vlastnosti snazi nejak simulovat, aby to bylo srovnatelne s velkymi db. A taky je dobre myslet na to, kdy cloveku staci sqlite, a kdy je dobre sahnout po necem vetsim.
Název: Re:SQLite - zmena štruktúry tabuľky vedie k chybe
Přispěvatel: Stanislav Hruška 11-06-2016, 09:13:23
Citace
1. Nejak nechapu, cemu se divis? Proc by ti to melo dovolit menit deklaraci tabulky, na kterou ma jina tabulka navazany foreign key?
Lebo som iba pridával ďalší stĺpec, ktorý s tým nemal nič spoločné. A doteraz mi to vždy tak išlo.
Citace
Zkratka, se sqlite je dobre pracovat trochu jinak.
To som rýchlo zistil, že sa ňou musí robiť ináč. Len ešte neviem ako ???
Citace
]A taky je dobre myslet na to, kdy cloveku staci sqlite, a kdy je dobre sahnout po necem vetsim.
V tom mám úplne jasno.


Název: Re:SQLite - zmena štruktúry tabuľky vedie k chybe
Přispěvatel: pf1957 11-06-2016, 10:20:40
To som rýchlo zistil, že sa ňou musí robiť ináč. Len ešte neviem ako ???
Nejlpepsi bude na strance WikiDoc Embaracadero, kde neco popisuji, ale jak jsem se dival, nic moc.
Ale treba jak FM mapuje IMMEDIATE transakci tam je ;-)

Pokud to s Sqlite myslis vazne, tak je podle me treba ji porozumet bez ohledu na FireDac.
Sqlite ma precisni dokumentaci.

No a kdyz budes vedet, jak Sqlite pracuje jako takova, tak muzes resit, co kdo kde jak udelal,
kdyz na ni narouboval nejake dataset based komponenty napr. FireDac.

Ja ti s tim s FireDac+Sqlite neporadim, protoze jednak pro Sqlite pouzivam vlastni dataset based
komponenty a dvak uz jsem nekdy od roku 2010 s Sqlite nic noveho nedelal.

Název: Re:SQLite - zmena štruktúry tabuľky vedie k chybe
Přispěvatel: Stanislav Hruška 11-06-2016, 10:27:23
Hm, tak veľké štúdium nepripúšťam :D  V tom prípade mám dve možnosti:

1) Access - ešte ma nesklamal
2) FireBird Embeded.

V danom konkrétnom prípade ostanem pri Access-e. Pôvodne to funguje na ňom. Takže aj novú štruktúru je lepšie hodiť doň.

Týmto sa lúčim s SQLite 8)