Tenho uma dúvida sobre o comando INSERT na tabela Usuarios_na_UnidadeEscolar, e a dúvida é a seguinte:
Há alguma maneira de importar automaticamente os valores das FKs [color=orange]UnidadeEscolar_TiposDeUnidadeEscolar_idTipoDeUnidadeEscolar[/color], [color=orange]UnidadeEscolar_DiretoriaRegional_idDiretoriaRegional[/color], [color=orange]UnidadeEscolar_DiretoriaLocal_idDiretoriaLocal[/color] apenas informando o valor do campo [color=blue]UnidadeEscolar_idUnidadeEscolar[/color]?
Exemplo: Eu, apenas com este Insert: [color=blue]INSERT INTO Usuarios_na_UnidadeEscolar (Usuarios_loginUsuarios, UnidadeEscolar_idUnidadeEscolar, GruposDePermissoes_idGrupoDePermissoes) VALUES (‘THIAGO’, ‘DR. AUGUSTO REIS’, ‘ADMINISTRADORES’);[/color] gostaria que os campos citados acima se preenchessem automaticamante.
Tipo, como eu estou informando que a FK que vem da tabela UnidadeEscolar é a escola Dr. Augusto Reis, o banco de dados importasse da tabela UnidadeEscolar, todo o conteúdo das FKs (citadas acimas) do registro que tem a PK Dr. Augusto Reis.
Há alguma maneira?
Não sei se conseguir ser claro e específico, porém, espero que vc’s entendam minha intenção.
Execute as queries SELECT para recuperar os ids TipoDeUnidadeEscolar_idTipoDeUnidadeEscolar, DiretoriaRegional_idDiretoriaRegional e DiretoriaLocal_idDiretoriaLocal, armazene em variáveis e depois concatene na String da query INSERT.
Algo assim:
String sql = "SELECT TipoDeUnidadeEscolar_idTipoDeUnidadeEscolar,
DiretoriaRegional_idDiretoriaRegional,
DiretoriaLocal_idDiretoriaLocal
FROM UnidadeEscolar
WHERE idUnidadeEscolar = 'THIAGO'";
// Execute a SQL e recupere os id's
Long idTipoDeUnidadeEscolar = rs.getLong("TipoDeUnidadeEscolar_idTipoDeUnidadeEscolar");
Long idDiretoriaRegional = rs.getLong("DiretoriaRegional_idDiretoriaRegional");
Long idDiretoriaLocal = rs.getLong("DiretoriaLocal_idDiretoriaLocal");
StringBuffer sql = new StringBuffer();
sql.append(" INSERT INTO Usuarios_na_UnidadeEscolar ");
sql.append(" (Usuarios_loginUsuarios, UnidadeEscolar_idUnidadeEscolar, ");
sql.append(" GruposDePermissoes_idGruposDePermissoes, ");
sql.append(" UnidadeEscolar_TipoDeUnidadeEscolar_idTipoDeUnidadeEscolar, ");
sql.append(" UnidadeEscolar_DiretoriaRegional_idDiretoriaRegional, ");
sql.append(" UnidadeEscolar_DiretoriaLocal_idDiretoriaLocal) ");
sql.append(" VALUES ('THIAGO', 'DR. AUGUSTO REIS', 'ADMNISTRADORES', ");
sql.append(" " + idTipoDeUnidadeEscolar + ", " + idDiretoriaRegional + ", " + idDiretoriaLocal);
sql.append(" ); ");
Naquela primeira query sua está retornando erro pq o resultado da sql são 3 campos mas vc somente pode retornar um. Você poderia colocar 3 SQL diferentes retornando uma para cada campo de id.
Se você fizer assim vai funcionar:
INSERT INTO Usuarios_na_UnidadeEscolar
(Usuarios_loginUsuarios,
UnidadeEscolar_idUnidadeEscolar,
GruposDePermissoes_idGruposDePermissoes,
UnidadeEscolar_TipoDeUnidadeEscolar_idTipoDeUnidadeEscolar,
UnidadeEscolar_DiretoriaRegional_idDiretoriaRegional,
UnidadeEscolar_DiretoriaLocal_idDiretoriaLocal)
VALUES ('THIAGO',
'DR. AUGUSTO REIS',
'ADMNISTRADORES',
(SELECT TipoDeUnidadeEscolar_idTipoDeUnidadeEscolar
FROM UnidadeEscolar
WHERE idUnidadeEscolar = 'THIAGO'),
(SELECT DiretoriaRegional_idDiretoriaRegional
FROM UnidadeEscolar
WHERE idUnidadeEscolar = 'THIAGO')
(SELECT DiretoriaLocal_idDiretoriaLocal
FROM UnidadeEscolar
WHERE idUnidadeEscolar = 'THIAGO')
);