Azure SQL创建带约束自增ID引发Power Apps问题,SQL报WITH语法错误
解决SQL创建表语法错误及Power Apps自增ID问题
一、SQL语法错误:"Incorrect syntax near 'WITH'"
你的SQL语句里有一个细微的语法问题——在主键聚集索引的闭合括号和WITH关键字之间缺少空格,SQL Server的解析器无法正确识别这个语法分隔,所以抛出了错误。
修正后的完整SQL语句:
CREATE TABLE [dbo].[Stopwords]( [Id] [int] IDENTITY(1,1) NOT NULL, [Stopword] [nvarchar](150) NULL, [Timestamp] [nvarchar](17) NULL, [Created by] [nvarchar](150) NULL, CONSTRAINT [PK_StopwordsId] PRIMARY KEY CLUSTERED ( [Id] ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY] )
另外如果你的数据库兼容性级别过低(比如低于SQL Server 2005的90级别),也可能导致这些索引选项不被支持,可以通过以下命令检查并调整:
-- 检查当前数据库兼容性级别 SELECT name, compatibility_level FROM sys.databases WHERE name = '你的数据库名'; -- 升级到对应SQL Server版本的兼容级别(示例为SQL Server 2019的150) ALTER DATABASE 你的数据库名 SET COMPATIBILITY_LEVEL = 150;
二、Power Apps中自增ID约束的问题
Power Apps对接SQL Server自增列时,常见问题是应用试图给自增的Id列赋值,或者无法正确识别自增属性,以下是针对性解决步骤:
- 设置列的编辑权限:在Power Apps的表单控件中,找到
Id对应的输入控件,将其DisplayMode设置为DisplayMode.View,确保用户无法编辑该字段;同时在表单的Update属性中,不要包含Id字段的赋值逻辑。 - 使用Patch函数时避免赋值:如果用
Patch函数提交数据,不要在字段列表里包含Id,让SQL Server自动生成,示例:Patch(Stopwords, Defaults(Stopwords), {Stopword: "示例关键词", Timestamp: Text(Now(), "yyyyMMddHHmmssfff"), 'Created by': User().FullName}) - 刷新数据源:在Power Apps的数据源面板中,找到
Stopwords表,点击刷新按钮,确保应用识别到最新的表结构(包括自增属性)。 - 检查连接权限:确保Power Apps连接SQL Server使用的账户拥有
INSERT权限,并且能读取表的元数据(这样应用才能自动识别出自增列)。
内容的提问来源于stack exchange,提问作者DasGerberBaby
相关产品推荐
相关产品推荐

