Hello List
I encounterd an strange behaviour with rowid and last_insert_rowid().

Here's the Code:

BEGIN TRANSACTION;
DROP TABLE IF EXISTS tb_language;
CREATE TABLE tb_language (
tag INTEGER PRIMARY KEY AUTOINCREMENT
,lang_code VARCHAR(7) NOT NULL
,desc_german VARCHAR(25) NOT NULL
,desc_native VARCHAR(25) NULL
);

CREATE TRIGGER trg_dont_change_language_tag BEFORE UPDATE OF tag ON tb_language
BEGIN
SELECT(RAISE(IGNORE));
END;

CREATE TRIGGER trg_dont_delete_master_language BEFORE DELETE ON tb_language WHEN(OLD.tag=(SELECT tb_master_language FROM tb_master_tag))
BEGIN SELECT(RAISE(IGNORE));
END;

DROP INDEX IF EXISTS idx_language;
CREATE UNIQUE INDEX idx_language ON tb_language(lang_code,desc_german,desc_native);

INSERT INTO
tb_language(lang_code,desc_german,desc_native)
VALUES('de_DE','Deutsch','Deutsch (Standard)');

INSERT INTO
tb_language(lang_code,desc_german,desc_native)
VALUES('en_UK','Englisch (UK)','english (UK)');

INSERT INTO
tb_language(lang_code,desc_german,desc_native)
VALUES('fr_FR','Französisch','francais');

INSERT INTO
tb_language(lang_code,desc_german,desc_native)
VALUES('it_IT','Italienisch','Italiano');

INSERT INTO
tb_language(lang_code,desc_german,desc_native)
VALUES('es_ES','Spanisch','espaniol');

DROP VIEW IF EXISTS vw_last_insert_language_tag;
CREATE VIEW vw_last_insert_language_tag AS
SELECT CASE WHEN
(SELECT tag FROM tb_language WHERE rowid=last_insert_rowID()) IS NULL THEN 0
ELSE(SELECT tag FROM tb_language WHERE rowid=last_insert_rowID())END;

COMMIT;

(I don't think that there's a Problem with the triggers, but who can tell...) When I do a "SELECT tag FROM vw_last_insert_language_tag" I think 5 should be returned (since there are 5 INSERTS with 5 autoinc'd), but I receive 1 as result. Is there anything else I have to deal with?

thx in advance
Uwe

-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to