我将数据库从访问权限转换为 sql server ...现在我想复制它,并且数据库给出主键错误...我编写了下面的代码以在所有数据库中添加新列,但我无法转换' autoid' 列作为主键...请帮助解决它。
USE Aidherpnew
GO
IF OBJECT_ID(N'tempdb..#TempSysTableNames') IS NOT NULL
BEGIN
DROP TABLE #TempSysTableNames
END;
DECLARE @ColumnName VARCHAR(250) = 'autoid'
,@DataType VARCHAR(250) = 'INT'
,@DefaultValue VARCHAR(250) = '1'
,@SQL VARCHAR(8000)
,@MaxRowNum INT
,@I INT = 1;
SELECT '[' + DB_NAME() + '].[' + OBJECT_SCHEMA_NAME([object_id],DB_ID()) + '].[' + name + ']' AS [name]
,ROW_NUMBER() OVER (ORDER BY [create_date]) AS RowNum
INTO #TempSysTableNames
FROM sys.tables
WHERE [type] = 'U';
SET @MaxRowNum = (SELECT MAX(RowNum)
FROM #TempSysTableNames);
WHILE (@I <= @MaxRowNum)
BEGIN
SET @SQL = (SELECT 'ALTER TABLE ' + [name] + ' ADD ' + @ColumnName + ' ' + @DataType + ' NOT NULL DEFAULT ' + @DefaultValue + ';'
FROM #TempSysTableNames
WHERE RowNum = @I);
PRINT(@SQL);
EXECUTE(@SQL);
SET @I += 1;
END;
如果您想将新列设为 a,
PRIMARY KEY
您所要做的就是在添加列脚本中指定该列(假设您的表尚未定义该列)。你可以像这样完成这个:这里有一些关于创建主键的进一步文档。