我有两张桌子:
CREATE TABLE possible_noise 
    (id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, text VARCHAR(50) NOT NULL, 
    PRIMARY KEY(id));
和
CREATE TABLE diagnostic
    (id BIGINT UNSIGNED NOT NULL, 
    noise SMALLINT UNSIGNED DEFAULT NULL, 
    friction ....., 
    FOREIGN KEY (noise) 
    REFERENCES possible_noise(id), 
    FOREIGN KEY(friction) ...... );
第一个表是噪声测试可能值的表,其中“文本”是一些文本值,例如“噪声正常”或“太大声”或类似的东西。第二个表是带有产品 id 和 x 列的产品表,其中所有列都用于一种类型的测试。如果测试未完成,则为 NULL
这是我的问题:
当我需要使用这样的东西时......
PreparedStatement prepState = conn.prepareStatement("UPDATE diagnostic SET noise=?, diagnostic_result=?, software_version=?, .... WHERE id=?;");
...并且需要放 NULL
prepState.setInt(2, java.sql.Types.INTEGER)
它抛出错误:
无法添加或更新子行:外键约束失败 (
eps_remanufacturing_system.diagnostic, CONSTRAINTdiagnostic_ibfk_3FOREIGN KEY (noise) REFERENCESpossible_noise(id))
我的问题 :
是否有可能如何在preparedStatement中使用sql(http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html)中的DEFAULT?