小编Hor*_*ine的帖子

为什么MS SQL允许您创建非法列?

我最近看到一条推文,指出您可以SELECT * FROM TableName通过以下方式构建表来阻止其他开发人员使用来从表中读取内容:

CREATE TABLE [TableName]
(
   [ID] INT IDENTITY NOT NULL,
   [Name] VARCHAR(50) NOT NULL,
   [DontUseStar] AS (1 / 0)
);
Run Code Online (Sandbox Code Playgroud)

很容易看到,使用SELECT *此处会尝试将空白列名称读取为1除以0(从而导致除以零的错误),但没有为该列分配数据类型。

为什么SQL允许您创建一个没有分配数据类型的列,并且知道它的名称是非法的?

sql sql-server

12
推荐指数
2
解决办法
385
查看次数

标签 统计

sql ×1

sql-server ×1