Nur wie ändere ich die collation für ein vorhandenes Feld? Das beides klappt nicht, da er "collate" nicht kennt:
Code:
ALTER DOMAIN RDB$34 TYPE VARCHAR(15) CHARACTER SET UTF8 collate UNICODE_CI_AI_NUM;
alter table MyTable
alter column MyField
type varchar(15)
character set UTF8
collate UNICODE_CI_AI_NUM;
Man sollte besser mit domains arbeiten.
Machst du Felddefinitionen ohne domain, dann legt dir Firebird selbst eine domain "RDB$XXX" an.
Diese automatisch erzeugten domain kann man ändern:
update RDB$RELATION_FIELDS set RDB$COLLATION_ID = 2 where RDB$FIELD_NAME = 'feldname' and RDB$RELATION_NAME = 'tabellenname'
Arbeitest du mit domain, dann weist du dem Feld eine neue domain zu.
ALTER TABLE tabellenname ALTER COLUMN feldname TYPE neuer_domainnamw
SQL-Code:
CREATE DOMAIN D_VARCHAR_40_NUMSORT AS VARCHAR(40) CHARACTER SET UTF8 COLLATE UNICODE_NUM;
ALTER TABLE MYTABLE ALTER COLUMN MYFIELD TYPE D_VARCHAR_40_NUMSORT;
Frank