2015-03-13 34 views
0

我有一个管理客户端的材料请求的应用程序。在这个应用程序中,每个MaterialRequest都必须有一个地址,但是,有时这不会发生,我必须修复它!在表中创建条目并分配给另一个对象的SQL查询

我的解决方案是创建一个defaultaddress并将其分配给AddressId为空的订单。

UPDATE MaterialRequest 
SET AddressId = INSERT INTO Address(Complement) VALUES (''); 
WHERE AddressId is NULL; 

但是,以前的代码不起作用,我不知道如何在SQL中做类似的事情。

我该怎么做?

+0

哪个DBMS? sqlserver <> mysql – 2015-03-13 13:30:05

+0

Ops,sqlserver。我现在将修复标签! – 2015-03-13 13:30:50

+0

你必须分两步进行。插入地址表,然后将AddressId设置为新地址的ID。当然,如果你在一个像这样的Update语句中做了这个,那么这将使所有的NULL地址指向同一个地址ID,我猜这不是你想要的。我是否认为你想在Address中为MaterialRequest中的每一行创建一行为NULL的行,然后将它们连接起来? – pmbAustin 2015-03-13 13:35:42

回答

0

不要在您的查询中执行此操作,请在表定义中添加一个默认值。例如:

ALTER TABLE table_name 
MODIFY column_name datatype DEFAULT 'default value' 
相关问题