在PreparedStatement中使用“DEFAULT”值

时间:2013-04-12 17:15:42

标签: java mysql prepared-statement default

我有两张桌子:

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) ...... );

第一个表是具有噪声测试的可能值的表,其中“text”是一些文本值,例如“noise is ok”或“too loud”或类似的东西。第二个表是产品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_systemdiagnostic,CONSTRAINT diagnostic_ibfk_3 FOREIGN KEY(noise)参考possible_noiseid))

我的问题:

是否有可能在prepareStatement中使用sql(http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html)中的DEFAULT?

1 个答案:

答案 0 :(得分:2)

您必须用DEFAULT替换占位符:

...
SET noise=DEFAULT
...