There are a few things missing from your setup.
Try this; there may be other ideas for you too, but this works.
create a new table

CREATE TABLE A_AUTO_TEST (
     NEW_FIELD  INTEGER NOT NULL,
     SOME_DATA  CHAR(10)
);

ensure the field you want is the PK

ALTER TABLE A_AUTO_TEST ADD CONSTRAINT PK_A_AUTO_TEST PRIMARY KEY 
(NEW_FIELD);

create a generator - that does the auto-increment for you

CREATE SEQUENCE GEN_A_AUTO_TEST_ID;
change it to whatever you want
ALTER SEQUENCE GEN_A_AUTO_TEST_ID RESTART WITH 3;

create a trigger, I've used a before insert

SET TERM ^ ;

/* Trigger: A_AUTO_TEST_BI0 */
CREATE OR ALTER TRIGGER A_AUTO_TEST_BI0 FOR A_AUTO_TEST
ACTIVE BEFORE INSERT POSITION 0
AS
begin
   new.new_field=gen_id(gen_a_auto_test_id,1);
end
^

SET TERM ; ^

now go ahead and insert data

insert into a_auto_test  (some_data)
values('a2')

Hope this helps.

Alan J Davies
Aldis

On 15/11/2016 19:58, 'Some One' anotherpersonsomewh...@mail.com 
[firebird-support] wrote:
>
>
> I am trying to add new auto-increment primary keys for existing table.
>
> This is what I have:
> ======================================
> set term ~ ;
> execute block
> as
> declare dbkey char(8);
> begin
> for
> select rdb$db_key
> from mytable
> into :dbkey
> do
> begin
> ...
> end
> end~
> set term ; ~
> ======================================
> This fails with error "malformed string", it looks like either
> rdb$db_key does not match char(8) or maybe it is related to same
> character set settings. Any suggestions?
>
> It also seems that when new entries are added the auto-incremented
> values will start from 0, causing conflicts. Is it ok to simply right
> click the generator in FlameRobin, select "set value" and enter a value
> higher than the highest existing or will that cause any trouble?
>
> 
  • [firebird... 'Some One' anotherpersonsomewh...@mail.com [firebird-support]
    • Re: ... Alan J Davies alan.dav...@aldis-systems.co.uk [firebird-support]
      • ... 'Some One' anotherpersonsomewh...@mail.com [firebird-support]
      • ... Helen Borrie hele...@iinet.net.au [firebird-support]
    • Re: ... setysvar setys...@gmail.com [firebird-support]
    • Re: ... Alain Bastien alainbast...@gmail.com [firebird-support]
    • Re: ... Ann Harrison aharri...@ibphoenix.com [firebird-support]
      • ... 'Some One' anotherpersonsomewh...@mail.com [firebird-support]
        • ... hv...@users.sourceforge.net [firebird-support]

Reply via email to