我有两张桌子:
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_system
。diagnostic
,CONSTRAINTdiagnostic_ibfk_3
FOREIGN KEY(noise
)参考possible_noise
(id
))
我的问题:
是否有可能在prepareStatement中使用sql(http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html)中的DEFAULT?
答案 0 :(得分:2)
您必须用DEFAULT替换占位符:
...
SET noise=DEFAULT
...