SQL创建视图时报错

qq_36171631 2017-10-14 03:10:20
CREATE VIEW V_DLMU_PartSupp2
AS
SELECT PS_PARTKEY,PS_SUPPKEY,PS_AVAILQTY,PS_SUPPLYCOST
FROM PARTSUPP
WHERE PS_SUPPKEY = (SELECT S_SUPPKEY
FROM SUPPLIER
WHERE S_NAME = 'Supplier#000000001')
WITH CHECK OPTION;

INSERT INTO V_DLMU_PartSupp2
VALUES(58889,5048,704,77760);

UPDATE V_DLMU_PartSupp2
SET PS_SUPPLYCOST = 12
WHERE PS_SUPPKEY=58889;

DELETE FROM V_DLMU_PartSupp2
WHERE PS_SUPPKEY = 58889;

第一句报错:CREATE VIEW必须是批处理中仅有的语句
...全文
922 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36171631 2017-10-14
  • 打赏
  • 举报
回复
引用 11 楼 sinat_28984567 的回复:
http://www.w3school.com.cn/sql/sql_view.asp
懂了!!!谢谢
二月十六 版主 2017-10-14
  • 打赏
  • 举报
回复
二月十六 版主 2017-10-14
  • 打赏
  • 举报
回复
引用 9 楼 qq_36171631 的回复:
[quote=引用 8 楼 sinat_28984567 的回复:] [quote=引用 7 楼 qq_36171631 的回复:] [quote=引用 6 楼 sinat_28984567 的回复:] 一步一步的执行,先执行 [quote=引用 5 楼 qq_36171631 的回复:] [quote=引用 2 楼 sinat_28984567 的回复:] 一步一步的执行,先执行新建视图语句试试:
CREATE VIEW V_DLMU_PartSupp2
AS
    SELECT  PS_PARTKEY ,
            PS_SUPPKEY ,
            PS_AVAILQTY ,
            PS_SUPPLYCOST
    FROM    PARTSUPP
    WHERE   PS_SUPPKEY = ( SELECT   S_SUPPKEY
                           FROM     SUPPLIER
                           WHERE    S_NAME = 'Supplier#000000001'
                         )
WITH CHECK OPTION;

这一步是可以的 然后接着执行下面代码吗

INSERT INTO V_DLMU_PartSupp2
VALUES(58889,5048,704,77760);

UPDATE V_DLMU_PartSupp2
SET PS_SUPPLYCOST = 12
WHERE PS_SUPPKEY=58889;

DELETE FROM V_DLMU_PartSupp2
WHERE PS_SUPPKEY = 58889;
[/quote] 似的[/quote] 然后又出现了这错误,,, 消息 515,级别 16,状态 2,第 2 行 不能将值 NULL 插入列 'PS_COMMENT',表 'dbTPC.dbo.PARTSUPP';列不允许有 Null 值。INSERT 失败。 语句已终止。[/quote] 提示很明显,PS_COMMENT的不能插入空值。 另外楼主为什么要直接给视图插入数据?视图只是一个select的语句,最终还是插入的表数据。[/quote] 可是他报错的列PS_COMMENT在我创的视图里并没有,就很奇怪(PS:这是实验作业来的,楼主学生党)[/quote] 视图不是一个表,是一个select语句。 插入数据的时候没有插入到视图中,没法插入到视图中,插入的还是表中。
qq_36171631 2017-10-14
  • 打赏
  • 举报
回复
引用 8 楼 sinat_28984567 的回复:
[quote=引用 7 楼 qq_36171631 的回复:] [quote=引用 6 楼 sinat_28984567 的回复:] 一步一步的执行,先执行 [quote=引用 5 楼 qq_36171631 的回复:] [quote=引用 2 楼 sinat_28984567 的回复:] 一步一步的执行,先执行新建视图语句试试:
CREATE VIEW V_DLMU_PartSupp2
AS
    SELECT  PS_PARTKEY ,
            PS_SUPPKEY ,
            PS_AVAILQTY ,
            PS_SUPPLYCOST
    FROM    PARTSUPP
    WHERE   PS_SUPPKEY = ( SELECT   S_SUPPKEY
                           FROM     SUPPLIER
                           WHERE    S_NAME = 'Supplier#000000001'
                         )
WITH CHECK OPTION;

这一步是可以的 然后接着执行下面代码吗

INSERT INTO V_DLMU_PartSupp2
VALUES(58889,5048,704,77760);

UPDATE V_DLMU_PartSupp2
SET PS_SUPPLYCOST = 12
WHERE PS_SUPPKEY=58889;

DELETE FROM V_DLMU_PartSupp2
WHERE PS_SUPPKEY = 58889;
[/quote] 似的[/quote] 然后又出现了这错误,,, 消息 515,级别 16,状态 2,第 2 行 不能将值 NULL 插入列 'PS_COMMENT',表 'dbTPC.dbo.PARTSUPP';列不允许有 Null 值。INSERT 失败。 语句已终止。[/quote] 提示很明显,PS_COMMENT的不能插入空值。 另外楼主为什么要直接给视图插入数据?视图只是一个select的语句,最终还是插入的表数据。[/quote] 可是他报错的列PS_COMMENT在我创的视图里并没有,就很奇怪(PS:这是实验作业来的,楼主学生党)
二月十六 版主 2017-10-14
  • 打赏
  • 举报
回复
引用 7 楼 qq_36171631 的回复:
[quote=引用 6 楼 sinat_28984567 的回复:] 一步一步的执行,先执行 [quote=引用 5 楼 qq_36171631 的回复:] [quote=引用 2 楼 sinat_28984567 的回复:] 一步一步的执行,先执行新建视图语句试试:
CREATE VIEW V_DLMU_PartSupp2
AS
    SELECT  PS_PARTKEY ,
            PS_SUPPKEY ,
            PS_AVAILQTY ,
            PS_SUPPLYCOST
    FROM    PARTSUPP
    WHERE   PS_SUPPKEY = ( SELECT   S_SUPPKEY
                           FROM     SUPPLIER
                           WHERE    S_NAME = 'Supplier#000000001'
                         )
WITH CHECK OPTION;

这一步是可以的 然后接着执行下面代码吗

INSERT INTO V_DLMU_PartSupp2
VALUES(58889,5048,704,77760);

UPDATE V_DLMU_PartSupp2
SET PS_SUPPLYCOST = 12
WHERE PS_SUPPKEY=58889;

DELETE FROM V_DLMU_PartSupp2
WHERE PS_SUPPKEY = 58889;
[/quote] 似的[/quote] 然后又出现了这错误,,, 消息 515,级别 16,状态 2,第 2 行 不能将值 NULL 插入列 'PS_COMMENT',表 'dbTPC.dbo.PARTSUPP';列不允许有 Null 值。INSERT 失败。 语句已终止。[/quote] 提示很明显,PS_COMMENT的不能插入空值。 另外楼主为什么要直接给视图插入数据?视图只是一个select的语句,最终还是插入的表数据。
qq_36171631 2017-10-14
  • 打赏
  • 举报
回复
引用 6 楼 sinat_28984567 的回复:
一步一步的执行,先执行 [quote=引用 5 楼 qq_36171631 的回复:] [quote=引用 2 楼 sinat_28984567 的回复:] 一步一步的执行,先执行新建视图语句试试:
CREATE VIEW V_DLMU_PartSupp2
AS
    SELECT  PS_PARTKEY ,
            PS_SUPPKEY ,
            PS_AVAILQTY ,
            PS_SUPPLYCOST
    FROM    PARTSUPP
    WHERE   PS_SUPPKEY = ( SELECT   S_SUPPKEY
                           FROM     SUPPLIER
                           WHERE    S_NAME = 'Supplier#000000001'
                         )
WITH CHECK OPTION;

这一步是可以的 然后接着执行下面代码吗

INSERT INTO V_DLMU_PartSupp2
VALUES(58889,5048,704,77760);

UPDATE V_DLMU_PartSupp2
SET PS_SUPPLYCOST = 12
WHERE PS_SUPPKEY=58889;

DELETE FROM V_DLMU_PartSupp2
WHERE PS_SUPPKEY = 58889;
[/quote] 似的[/quote] 然后又出现了这错误,,, 消息 515,级别 16,状态 2,第 2 行 不能将值 NULL 插入列 'PS_COMMENT',表 'dbTPC.dbo.PARTSUPP';列不允许有 Null 值。INSERT 失败。 语句已终止。
二月十六 版主 2017-10-14
  • 打赏
  • 举报
回复
一步一步的执行,先执行
引用 5 楼 qq_36171631 的回复:
[quote=引用 2 楼 sinat_28984567 的回复:] 一步一步的执行,先执行新建视图语句试试:
CREATE VIEW V_DLMU_PartSupp2
AS
    SELECT  PS_PARTKEY ,
            PS_SUPPKEY ,
            PS_AVAILQTY ,
            PS_SUPPLYCOST
    FROM    PARTSUPP
    WHERE   PS_SUPPKEY = ( SELECT   S_SUPPKEY
                           FROM     SUPPLIER
                           WHERE    S_NAME = 'Supplier#000000001'
                         )
WITH CHECK OPTION;

这一步是可以的 然后接着执行下面代码吗

INSERT INTO V_DLMU_PartSupp2
VALUES(58889,5048,704,77760);

UPDATE V_DLMU_PartSupp2
SET PS_SUPPLYCOST = 12
WHERE PS_SUPPKEY=58889;

DELETE FROM V_DLMU_PartSupp2
WHERE PS_SUPPKEY = 58889;
[/quote] 似的
qq_36171631 2017-10-14
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
一步一步的执行,先执行新建视图语句试试:
CREATE VIEW V_DLMU_PartSupp2
AS
    SELECT  PS_PARTKEY ,
            PS_SUPPKEY ,
            PS_AVAILQTY ,
            PS_SUPPLYCOST
    FROM    PARTSUPP
    WHERE   PS_SUPPKEY = ( SELECT   S_SUPPKEY
                           FROM     SUPPLIER
                           WHERE    S_NAME = 'Supplier#000000001'
                         )
WITH CHECK OPTION;

这一步是可以的 然后接着执行下面代码吗

INSERT INTO V_DLMU_PartSupp2
VALUES(58889,5048,704,77760);

UPDATE V_DLMU_PartSupp2
SET PS_SUPPLYCOST = 12
WHERE PS_SUPPKEY=58889;

DELETE FROM V_DLMU_PartSupp2
WHERE PS_SUPPKEY = 58889;
  • 打赏
  • 举报
回复
你创建视图之后的语句,单独用一个查询窗口执行不就行了。创建视图只能是唯一的语句。
qq_36171631 2017-10-14
  • 打赏
  • 举报
回复
这一步是可以的

CREATE VIEW  V_DLMU_PartSupp2 
AS
SELECT PS_PARTKEY,PS_SUPPKEY,PS_AVAILQTY,PS_SUPPLYCOST
FROM PARTSUPP
WHERE PS_SUPPKEY = (SELECT S_SUPPKEY
					FROM SUPPLIER
					WHERE S_NAME = 'Supplier#000000001')


GO


WITH CHECK OPTION;
然后接着执行下面的语句吗
INSERT INTO V_DLMU_PartSupp2
VALUES(58889,5048,704,77760);

UPDATE V_DLMU_PartSupp2
SET PS_SUPPLYCOST = 12
WHERE PS_SUPPKEY=58889;

DELETE FROM V_DLMU_PartSupp2
WHERE PS_SUPPKEY = 58889;
二月十六 版主 2017-10-14
  • 打赏
  • 举报
回复
一步一步的执行,先执行新建视图语句试试:
CREATE VIEW V_DLMU_PartSupp2
AS
SELECT PS_PARTKEY ,
PS_SUPPKEY ,
PS_AVAILQTY ,
PS_SUPPLYCOST
FROM PARTSUPP
WHERE PS_SUPPKEY = ( SELECT S_SUPPKEY
FROM SUPPLIER
WHERE S_NAME = 'Supplier#000000001'
)
WITH CHECK OPTION;

qq_36171631 2017-10-14
  • 打赏
  • 举报
回复
求大神解答怎么修改

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧