Another strange thing with gparts:
in 'sql/mysql/create-basic.sql' one finds:
------------------------ cut ----------------------------
...
CREATE TABLE Symbol (
SymbolID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
SymbolPath VARCHAR(500) NOT NULL,
DeviceID INTEGER UNSIGNED NOT NULL,
PRIMARY KEY ( SymbolID ),
FOREIGN KEY ( DeviceID ) REFERENCES Device,
UNIQUE ( SymbolPath )
);
-- Create a table for symbol details (comments).
--
-- Each symbol may have many comments.
--
CREATE TABLE SymbolDetail (
SymbolID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Detail VARCHAR(500) NOT NULL,
FOREIGN KEY ( SymbolID ) REFERENCES Symbol,
UNIQUE ( SymbolID, Detail )
);
...
------------------------ cut -----------------------------
what is the purpose of auto-increment on a foreign key?
Auto-increment would probably be the default behavior, but as it
will break the foreign key constraint this, same as not assigning
anything will prevent creation of that row. Actually it is worse
(at least with PostgreSQL): the autoincrement counter falls
behind, if the default behavior is not used.
It can be assumed, that the SymbolID's from "Symbol" will form a
gapless sequence.
If for some reason, the SymbolID gets missed during creation of a
SymbolDetail, the AUTO_INCREMENT will produce an integer
that is probably low, because this is a bug. And this will happily
attach the detail to a random symbol, instead of raising an exception.
Wrong?
Armin