Je veux écrire une requête pour insérer des données dans deux tables.
Je insère des données dans deux tables, connaissez comme Table d'entreprise forte> p> - p> Je reçois une erreur p> utilisateur code> et
société code>.
utilisateur code> a une clé étrangère
société _id code>. La structure de la table est donnée coupée p>
3 Réponses :
Ceci probablement parce que votre Company_id code> est défini sur
non null code> dans la table code> de code>. Vous devez supprimer
non NULL code> à partir de la colonne
Company_ID CODE> de votre tableau de création de table de la table code> utilisateur code>, si vous souhaitez que la clé étrangère soit nullable. Sinon, vous devez fournir une valeur pour la clé étrangère. P>
Société_id est fk donc ce n'est pas null.so s'il vous plaît laissez-moi savoir des changements de requête
comme clé étrangère mise à jour P> Pour insérer un nouvel utilisateur dont vous avez besoin: p> Nous avons d'abord besoin de rechercher le société_id code> ne peut pas être
null code>, la société doit exister dans la DB et son identifiant doit être connu avant de pouvoir insérer l'utilisateur.
société_id code> pour le nom de la société donné. Si ce n'est pas trouvé dans la base de données, une nouvelle entreprise est insérée. P>
public void insertUser(String userName, String userEmail, String companyName)
throws SQLException {
int companyId = getOrInsertCompany(companyName);
try (PreparedStatement stmt = cnt.prepareStatement(
"insert into User(company_id,user_name,user_email)"
+ " values(?,?,?)")) {
stmt.setInt(1, companyId);
stmt.setString(1, userName);
stmt.setString(1, userEmail);
stmt.executeUpdate();
}
}
private int getOrInsertCompany(String companyName) throws SQLException {
try (PreparedStatement stmt = cnt.prepareStatement(
"select company_id from Company where company_name=?")) {
stmt.setString(1, companyName);
try (ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
return rs.getInt(1);
}
}
}
// the company was not found; insert it
try (PreparedStatement stmt = cnt.prepareStatement(
"insert into Company(company_name) values(?)")) {
stmt.setString(1, companyName);
stmt.execute();
try (ResultSet rs = stmt.getGeneratedKeys()) {
if (!rs.next()) {
throw new SQLException(
"Could not get generated keys");
}
return rs.getInt(1);
}
}
}
Société_id est fk donc ce n'est pas null.so s'il vous plaît laissez-moi savoir des changements de requête
@Minakshi vous avez besoin de trois en fait
pls faire me faire savoir comment écrire la requête alors
Nous n'avons pas assez d'informations pour répondre complètement à la question suivante: quel est le schéma, comment les identifiants sont alloués? incrémentation automatique? Séquences?
Sa base de données simple que j'ai mis à jour des informations (AI). Pas de séquences ...
@Minakshi voir ma mise à jour
Vous devrez peut-être faire un commit l'insert
Vérifiez la contrainte NON NULL
ALTER TABLE YourTable ALTER COLUMN YourColumn columnType NULL
Veuillez éditer votre question, donc ce sera clair. Ce n'est pas lisible maintenant.
merci @nanna pour modifier la question..company_id est fk donc ce n'est pas null.so s'il vous plaît laissez-moi savoir des modifications de requête