"Alex" <[EMAIL PROTECTED]> writes:
> CREATE TABLE table (ID text UNIQUE, Name text, Surname text, SecDbKey text)
>
> INSERT INTO table VALUES ('001', 'John', 'Smith', 'A0B1C2D3')
>
> INSERT OR REPLACE INTO table VALUES ('001', 'Jane', 'Parker', 'E4F51234')
>
> In the given example the "UNIQUE" constraint will cause the row to be
> overwritten, and the "A0B1C2D3" key will be lost. And it seems there is no
> way to intercept this deletion. The ROWID will also be changed, so it cannot
> be used for tracking purposes. If anyone knows a solution, please, advice.
If I understand properly what you're trying to do, then you can probably add
an automatically-maintained map table, something like this:
CREATE TABLE table (id TEXT PRIMARY KEY,
name TEXT,
surname TEXT,
secDbKey TEXT);
CREATE TABLE map (id TEXT PRIMARY KEY,
secDbKey TEXT);
CREATE TABLE SecDb (secDbKey TEXT PRIMARY KEY);
CREATE TRIGGER table_insert_tr AFTER INSERT ON table
FOR EACH ROW
BEGIN
DELETE FROM SecDb WHERE secDbKey =
(SELECT secDbKey FROM map WHERE id = new.id);
INSERT OR REPLACE INTO map VALUES (new.id, new.secDbKey);
END
Note that the PRIMARY KEY definitions are necessary to ensure that the correct
rowid (which is also 'id') is overwritten on an INSERT OR REPLACE query.
Derrell