Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:插入到语句语法中_Sql_Sql Server_Tsql - Fatal编程技术网

SQL Server:插入到语句语法中

SQL Server:插入到语句语法中,sql,sql-server,tsql,Sql,Sql Server,Tsql,为什么下面的INSERT语句没有给出任何错误 CREATE TABLE Table1(id INT,name VARCHAR(10)) INSERT INTO Table1(xx.id,yyyy.name) Values (1,'A') 为什么上面的语句忽略了xx.和yyyy.?这意味着什么?据我所知,您使用的语法通常意味着table.column 也就是说,您试图插入到表1中,但声明了来自其他表的列 你应该这样做 CREATE TABLE Table1(id INT,name VARCHA

为什么下面的
INSERT
语句没有给出任何错误

CREATE TABLE Table1(id INT,name VARCHAR(10))

INSERT INTO Table1(xx.id,yyyy.name) Values (1,'A')

为什么上面的语句忽略了
xx.
yyyy.
?这意味着什么?

据我所知,您使用的语法通常意味着table.column 也就是说,您试图插入到表1中,但声明了来自其他表的列

你应该这样做

CREATE TABLE Table1(id INT,name VARCHAR(10))

INSERT INTO Table1(id,name) Values (1,'A')

这意味着某物的名称空间

例如:

SELECT object.id, object.name FROM table object WHERE object.name = 'Foo';

                                          / \
                                          | |
                            object is the name space for the table.

如果没有创建名称空间,则查询将失败。

我唯一能想到的是,数据库引擎忽略了名称空间,因为在处理INSERT INTO时,查询的范围仅限于表的范围。当说到多个表可以作为作用域一部分的更新时,下面的操作将失败。不知道为什么会发生这种情况,但如果让我猜猜,可能会忽略上一个句点“.”左侧的所有值

如果您分析以下查询的执行计划

CREATE TABLE Table1(id INT,name VARCHAR(10))

INSERT INTO Table1(Table2.dbo.id,...................name) Values (1,'A')
作为


我也检查了下面的查询

INSERT INTO Table11(xx.xx.xx.xx.xx.xx.xx.id,yy.yy.yy.yy.yy.yy.yy.yy.name) 
Values (1,'A')
它也成功了。通常我们使用别名进行连接。据我所知,在sql中,使用别名进行插入查询时,表名附近是受限制的。对于列名,查询只使用最后一个点(.)旁边的字符串


我的结论是,Insert查询不关心以点(.)分隔的列名前缀的字符串

什么是xx。和yyy。应该代表什么?插入(id,name)值(1,'A')。正如OP所指出的,这不会产生错误:。我认为问题不在于它应该是怎样的,而是为什么尽管语法不正确,问题中的语句仍然有效。
INSERT INTO Table11(xx.xx.xx.xx.xx.xx.xx.id,yy.yy.yy.yy.yy.yy.yy.yy.name) 
Values (1,'A')