我正在开发一个定期用空白数据覆盖列的应用。它是一个相对简单的SQL数据库的专有前端。我没有访问前端代码,这个表中的数据主要是静态的,一旦输入它就不应该改变,永远不应该是空白。我想通过删除导致某些列设置为null
或blank
如果列已经填充了数据,那么阻止null
或Name
更新的最优雅方法是什么?例如,如果您的nvarchar列John Smith
的值为''
且更新过程在NULL
或John Smith
中传递,则保留值Jane Doe
有另一个名称 JSONObject object = new JSONObject(result);
JSONObject obj1 = object.getJSONObject("query");
JSONObject obj2 = obj1.getJSONObject("pages");
JSONObject obj3=null;
Iterator<String> keys= obj2.keys();
while (keys.hasNext())
{
String keyValue = (String)keys.next();
obj3 = obj2.getJSONObject(keyValue);
}
String desc = obj3.getString("extract");
继续更新。首先想到的是使用触发器执行此操作,但我知道这些可能会很混乱并影响正在执行的其他代码。有什么想法吗?
答案 0 :(得分:1)
使用BEFORE UPDATE
触发器,您可以这样做:
CREATE TRIGGER YourTable_ConditionalUpdate
ON YourTable
INSTEAD OF UPDATE
AS
BEGIN
UPDATE YourTable SET /* update all fields from original update except Name field */
Field1 = i.Field1,
Field2 = i.Field2,
Field3 = i.Field3
FROM YourTable
INNER JOIN Inserted i ON i.PrimaryKey = YourTable.PrimaryKey
UPDATE YourTable SET /* update Name only if it's not empty */
Name = i.Name
FROM YourTable
INNER JOIN Inserted i ON i.PrimaryKey = YourTable.PrimaryKey
WHERE NULLIF(i.Name, '') Is NOT NULL
END