我有一个包含一些随机数据的数据库,如:
图书:
Id uniqueidentifier,
title nvarchar(255),
author nvarchar(255),
genre nvarchar (255),
deleted datetime
我的Book
表中有很多不同的书。当我想删除一本书时,我真的不会从数据库中删除它,只是在我删除它时设置deleted
的日期时间。
这是一个困扰我的案例。
如果用户试图查找(搜索)他删除的书(不再存在),则需要返回空数组
以下是我所做的,但它不起作用:
CREATE PROCEDURE dbo.Book_GetById
@id uniqueidentifier
AS
BEGIN
DECLARE @_deleted DATETIME
SET @_deleted = NULL
SELECT @_deleted = Deleted
FROM Book
WHERE Id = @id
IF (@_deleted IS NOT NULL)
BEGIN
SELECT JSON_QUERY('[]')
FOR JSON PATH
这不是整个过程,只是我想通过检查delete是否为空来返回空JSON数组的部分,这意味着为该行设置了一个日期时间 - 书被删除(如果它为null,它没有被删除)。
PS1 :如果还有其他比空数组更好的方式,id也喜欢听到它!
PS2 :我需要"返回"我的单元测试中的数据,通过选中Assert.IsNotNull(book.Deleted);
当我在单元测试中运行我的调试器时,当我跳过时,我的var books
说null
,我认为这不是正确的我猜
答案 0 :(得分:0)
由于JSON作为NVARCHAR输出返回,为什么不这样做:
IF (@_deleted IS NOT NULL)
BEGIN
SELECT '[]'
END ELSE ....