更改视图以将列添加为非空位

时间:2017-11-15 15:44:34

标签: sql sql-server

我正在尝试使用ALTER VIEW向视图添加列,但它一直说'列无效'。我需要列为BIT NOT NULL。我该怎么做呢?谢谢大家!

SELECT dbo.tbl_skins.skinName, dbo.tbl_prefs.PersonID, dbo.tbl_prefs[columnName] etc... 
FROM dbo.tbl_prefs 
INNER JOIN dbo.tbl_skins 
   ON dbo.tbl_prefs.skinId = dbo.tbl_skins.skinId

我没有添加其余列,因为其余的都来自dbo.tbl_prefs。唯一不同的是第一个读dbo.tbl_skins.skinName

打开桌子后,我看到了,

SELECT TOP (1000) [column1],[column2], etc... FROM [table_name].

我要做的就是在表格(dbo.tbl_prefs)中添加一个类型为BIT,NOT NULL的新列,并为视图(dbo.qry_prefs)添加相同的列。

2 个答案:

答案 0 :(得分:1)

  

是的,我尝试使用该列来使其有点不为空,但我认为我写错了语法。对不起,我有一段时间没用过SQL   更不用说与观点合作了。我删除了查询,但我想我写了   它像ALTER VIEW [dbo]。[qry_prefs] AS SELECT CAST(位,非空)   [newColumn] FROM [projects]。[dbo]。[qry_prefs]但我很确定   那是错的。

您正尝试将一列添加到您希望再次从该视图中检索的视图中。这是没有意义的。

尝试这样的事情

假设您的视图名为qry_prefs,并且您想要添加一个空白位列。

allowedStrings = ['haha','wow','angry','sad','like'];
public reaction? : allowedStrings;

使用别名

让自己更容易一些
ALTER VIEW [dbo].[qry_prefs] AS 
  SELECT dbo.tbl_skins.skinName, 
         dbo.tbl_prefs.PersonID, 
         dbo.tbl_prefs.[columnName],
         etc... 
         convert(bit, null) as newColumn
  FROM dbo.tbl_prefs 
    INNER JOIN dbo.tbl_skins ON dbo.tbl_prefs.skinId = dbo.tbl_skins.skinId

编辑:根据评论,您似乎需要将字段添加到表格和视图中

可以这样做

ALTER VIEW [dbo].[qry_prefs] AS 
  SELECT s.skinName, 
         p.PersonID, 
         p.[columnName],
         etc... 
         convert(bit, null) as newColumn
  FROM dbo.tbl_prefs p 
    INNER JOIN dbo.tbl_skins s ON p.skinId = s.skinId

现在将此字段添加到视图中,如下所示

alter table [dbo].[tbl_prefs]
add newColumn bit null

答案 1 :(得分:-1)

试试这个----

创建表#temp(   col_1 varchar(15)not null,   col_2 varchar(15)not null );

将视图tq84_v创建为选择col_1,来自

的col_2