Olá amigos,
Sempre usei o MySQL como meu banco de dados preferido, mas estou fazendo um sistema pequeno para um amigo e preferi usar como banco de dados o Java DB, por poder ser embarcado na própria aplicação, que será desktop. Não quero que meu cliente tenha que ficar instalando o MySQL no computador dele, iniciando o servidor, etc, seria muito tedioso. 
Bom, o pau é o seguinte: tenho 2 tabelas, uma CLIENTES e outra PROJETOS. CLIENTES tem como chave primária um campo “nome”, do tipo Varchar. Um Cliente solicita um ou mais Projetos, e um Projeto só pode ser solicitado por um Cliente. Temos uma relação então Clientes -> Projetos de 1:M, OK? a chave primária “nome”, da tabela CLIENTES vai como chave estrangeira para a tabela PROJETOS. Até aí tudo bem… O problema é na hora de criar a restrição de integridade. Fica assim:
create table APP.PROJETOS (
id_projeto integer not null primary key generated always as identity,
nome varchar(100) not null,
data_visita date,
data_entrega date,
valor double not null,
descricao varchar(250),
nome_cliente varchar(150) constraint nome_cliente_fk references APP.Clientes, <---------
observacoes varchar(350)
);
(Observem a seta). Mas desse jeito, ao atualizar um nome de cliente ocorre uma restrição de integridade e aborta. Se eu colocar ON UPDATE CASCADE, o Java DB NÃO aceita (vi no seu manual e ele só aceita RESTRICT e NO ACTION). Tanto faz. Não se pode mais atualizar um nome de cliente depois que ele está como chave estrangeira em algum projeto. No MySQL bastava usar o ON UPDATE CASCADE, mas como disse, não existe essa opção no Java DB. Não sei o que fazer!!!
Desculpem o longo post. Se alguém souber como resolver, me ajude.
Grato.