所以,如果我有类似
的东西WifiNest.cpp.o:(.text._ZN11ArduinoJson9JsonArray7invalidEv[_ZN11ArduinoJson9JsonArray7invalidEv]+0x8): undefined reference to `__cxa_guard_acquire'
WifiNest.cpp.o:(.text._ZN11ArduinoJson9JsonArray7invalidEv[_ZN11ArduinoJson9JsonArray7invalidEv]+0xc): undefined reference to `__cxa_guard_release'
WifiNest.cpp.o: In function `ArduinoJson::JsonArray::invalid()':
C:\Program Files (x86)\Arduino/WifiNest.ino:156: undefined reference to `__cxa_guard_acquire'
C:\Program Files (x86)\Arduino/WifiNest.ino:156: undefined reference to `__cxa_guard_release'
WifiNest.cpp.o: In function `ArduinoJson::JsonObject::invalid()':
C:\Program Files (x86)\Arduino/WifiNest.ino:156: undefined reference to `__cxa_guard_acquire'
C:\Program Files (x86)\Arduino/WifiNest.ino:156: undefined reference to `__cxa_guard_release'
collect2.exe: error: ld returned 1 exit status
Error compiling.
然后很明显我收到错误
无法将值NULL插入列' NotNullColumn',表中 ' Merchant_BizarroNordstrom.dbo.FakeTable&#39 ;;列不允许 空值。 INSERT失败。
我想知道是否有暂时的方式,即在交易的上下文中,这样做是为了将char jsonArray [result.length()+1];
result.toCharArray(jsonArray,sizeof(jsonArray));
jsonArray[result.length() + 1] = '\0';
DynamicJsonBuffer json_buf;
JsonObject &root = json_buf.parseObject(jsonArray);
if (!root.success())
{
Serial.println("parseObject() failed");
}
插入到具有static JsonArray &invalid() {
static JsonArray instance(NULL);
return instance;
}
约束的列中导致没有任何事情发生而不是错误。
如果您对我现实生活中的问题感到好奇,那么我不想花费数小时阅读和调试,因此我想应用快速解决方案。
答案 0 :(得分:4)
使用TRY..CATCH阻止
像......那样的东西。
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO FakeTable (NotNullColumn) VALUES (NULL);
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF (@@TRANCOUNT > 0)
ROLLBACK TRANSACTION
PRINT 'Do something or nothing here'
END CATCH
使用try..catch块可以控制在出现错误时引发错误的时间。
在Try块中因为无法插入空值,控件跳转到Catch块,在那里您可以显式引发错误或什么也不做。
修改强>
阅读评论后,我认为你需要一个而不是插入触发器。像......那样......
CREATE TRIGGER insert_Into_FakeTable
ON FakeTable
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO FakeTable (NotNullColumn)
SELECT NotNullColumn
FROM inserted
WHERE NotNullColumn IS NOT NULL
END
将触发Trigger而不是实际的Insert语句,并且只会插入非null值。
答案 1 :(得分:-1)
但我只想对null插入做任何事情。例如,如果 我有INSERT INTO FakeTable(NotNullColumn)VALUES(NULL,5);然后我 仍然希望插入5个。
INSERT INTO FakeTable (NotNullColumn, othercolumn) VALUES (ISNULL(@VAL_THAT_MIGHT_BE_NULL,''), 5);
这将照顾您的要求。当然,不用说它将NULL值转换为空字符串,并且您的应用程序需要能够处理它。如果你的应用程序不期望一个空字符串,那么这不会起作用。