通过编程方式向SQL Server添加多个默认值

本文关键字:添加 默认值 Server SQL 编程 方式 | 更新日期: 2023-09-27 18:07:16

我在多个数据库中有一个表,我需要更新该表中的多个列并添加默认值。

我有以下约束添加到表中:

ALTER TABLE ProcessQUeue
ADD CONSTRAINT C_bSaveAfter DEFAULT 0 FOR bSaveAfter;
GO 
ALTER TABLE ProcessQueue
ADD CONSTRAINT C_bForcePassword DEFAULT 0 FOR bForcePassword;
GO 
ALTER TABLE ProcessQueue
ADD CONSTRAINT C_bIsComplete DEFAULT 0 FOR bIsComplete;
GO

如果我运行上述SQL Server管理工作室;

然后我删除了约束,并尝试在我的代码中运行它:

private static string AlterTable(string szQuery, string szReferencedFileName)
{
    try
    {
        using (SqlConnection aConnection = new SqlConnection(szConnectionString))
        {
            aConnection.Open();
            using (SqlCommand dbCommand = new SqlCommand(szQuery, aConnection))
            {
                dbCommand.ExecuteNonQuery();
            }
        }
    }
    //Some usual exception handling
    catch (SqlException e)
    {
        string szMsg = e.Message.ToString() + " " + e.ErrorCode.ToString();
        if (Environment.UserInteractive)
            Console.WriteLine("'r'n" + szMsg + "'r'n - Query: " + szQuery + "'r'n - " + szConnectionString + "'r'n");
        return "ERR:SQLDB/AddTable: " + szMsg;
    }
    catch (Exception e)
    {
        string szMsg = e.Message.ToString();
        if (Environment.UserInteractive)
            Console.WriteLine("'r'n" + szMsg + "'r'n - Query: " + szQuery + "'r'n - " + szConnectionString + "'r'n");
        return "ERRex:CheckSQLDB/AddTable: " + szMsg;
    }
    return string.Empty;
}

我得到一个错误:

"go"附近语法错误。
'go'附近语法错误。
'for'附近语法错误。

在某些情况下,我不得不从查询中删除GO,所以我也尝试了,语法错误是从' GO '更改为'for'。

为什么这个工作在SQL Server管理工作室,而不是在c#应用程序?

通过编程方式向SQL Server添加多个默认值

GO不是有效的SQL。这就是为什么它不起作用。它只是管理工作室使用的批处理分离器。您可以将所有这些查询放在一个存储过程中,也可以逐一运行它们。

谢谢你,阿克谢。有了你发布的内容,我找到了在一个查询中添加多个默认值的正确语法。格式如下:

alter table ProcessQueue ADD
CONSTRAINT C_bSaveAfter DEFAULT 0 FOR bSaveAfter,
CONSTRAINT C_bForcePassword DEFAULT 0 FOR bForcePassword,
CONSTRAINT C_bIsComplete DEFAULT 0 FOR bIsComplete;