To reproduce run the following two scripts with isql.exe (each script sould be executed separately):
1. Create database with table and two rows with the script:
CREATE DATABASE 'test.fdb' USER 'sysdba' PASSWORD 'masterkey';
CREATE TABLE TestTable
"ID" INTEGER NOT NULL,
PRIMARY KEY ("ID")
insert into TestTable values(1, 1);
insert into TestTable values(2, 2);
2. Add index and try to insert a record with second script:
ALTER TABLE TestTable ADD KsgFK integer;
CREATE UNIQUE INDEX ClassIdKsgIdx ON TestTable (ClassId, KsgFK);
insert into TestTable values(3,1,Null);
The server will crash with message:
The code attempted to access a virtual address without privilege to do so. This exception will cause the Firebird server to terminate abnormally.
Updating the table "TestTable" with query: update TestTable set Id = Id; before inserting the third row solves the problem - the statment fails with message "attemp to store duplicate value".