首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在azure sql中删除带有OUTPUT子句的语句

问在azure sql中删除带有OUTPUT子句的语句
EN

Stack Overflow用户
提问于 2015-12-06 21:34:42
回答 1查看 551关注 0票数 4

我使用DELETE语句的OUTPUT子句将其插入存档表中。

此代码在我的本地数据库上运行,没有问题。但是,在Azure数据库上运行时会出现一个错误,因为列值为null。

为什么这在Azure上会有不同的表现?

此代码:

代码语言:javascript
复制
DECLARE @courseId uniqueidentifier
SET @courseId = 'c7f5a926-e77a-4465-9120-38da284ed7d5'

DECLARE @courseCode nvarchar(max)
SELECT @courseCode = CourseCode FROM Courses WHERE CourseId = @courseId

SELECT @courseId
SELECT @courseCode

-- Courses
DELETE Courses
OUTPUT DELETED.*
INTO Archived_Courses
WHERE CourseId = @courseId

返回此错误:

(1行受影响) (1行受影响) (1行受影响) Msg 515、级别16、状态2、第16行不能将值NULL插入'CourseName‘列、表’.dbo.ArchiveCoures‘;列不允许空值。插入失败。声明已被终止。

EN

回答 1

Stack Overflow用户

发布于 2015-12-08 08:57:11

我做了一个忏悔者,他实际上在我的SQL数据库上工作得很好:假设您有这样的东西:

代码语言:javascript
复制
Create Table Courses
(
    CourseId uniqueidentifier NOT NULL PRIMARY KEY DEFAULT newid(),
    CourseCode nvarchar(50) NOT NULL DEFAULT newid(),
    CourseDescription nvarchar(MAX) NULL
)  

Create Table Archived_Courses
(
    CourseId uniqueidentifier NOT NULL PRIMARY KEY ,
    CourseCode nvarchar(50) NOT NULL ,
    CourseDescription nvarchar(MAX) NULL
)  

这是您的解决方案,对我有效(唯一的区别,我得到一个简单的选择课程代码的唯一标识符)

代码语言:javascript
复制
Insert into Courses (CourseCode, CourseDescription) values ('MOD01', 'Module 1 description');

DECLARE @courseId uniqueidentifier
Select @courseId = CourseId from Courses where CourseCode = 'MOD01'

DECLARE @courseCode nvarchar(max)
SELECT @courseCode = CourseCode FROM Courses WHERE CourseId = @courseId

SELECT @courseId
SELECT @courseCode

-- Courses
DELETE Courses
OUTPUT DELETED.*
INTO Archived_Courses
WHERE CourseId = @courseId

您是否确定,在您的OnPre前提数据库中插入时没有生成任何默认值,而在Azure SQL数据库中则没有这些默认值?

塞巴斯蒂安

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34123067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档