Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kesalahan nama kolom tidak valid saat memanggil sisipan setelah tabel dibuat

SQL Server mencoba untuk mengkompilasi seluruh batch. Jika tabel sudah ada maka akan dikompilasi sesuai dengan definisi yang sudah ada sebelumnya. Pernyataan yang mereferensikan kolom baru tidak dikompilasi sehingga batch tidak pernah dieksekusi.

Anda perlu mengelompokkan pernyataan menggunakan definisi baru ke dalam kumpulan baru. Jika Anda menjalankan ini di SSMS, cukup masukkan GO

USE MyDatabase;

BEGIN TRANSACTION;

-- some statements

PRINT(N'#1');

IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = N'dbo' AND TABLE_NAME = N'Table1' AND COLUMN_NAME = 'Table2_Id'))
BEGIN
    ALTER TABLE [dbo].[Table1] DROP CONSTRAINT [FK_Table1_Table2_Table2_Id];
    ALTER TABLE [dbo].[Table1] DROP COLUMN [Table2_Id];
    DROP TABLE [dbo].[Table2];

    PRINT(N'Table2 was dropped.');
END

GO

PRINT(N'#2');

IF (NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = N'dbo' AND TABLE_NAME = N'Table2'))
BEGIN
    CREATE TABLE [dbo].[Table2]
    (
        [Id] INT NOT NULL PRIMARY KEY IDENTITY,
        [Number] INT NOT NULL UNIQUE,
        [Name] NVARCHAR(200) NOT NULL,
        [RowVersion] TIMESTAMP NOT NULL
    );
PRINT(N'Table2 was re-created.');
    INSERT INTO [dbo].[Table2]([Number], [Name]) VALUES(-1, N'Default value');
PRINT(N'Default value was inserted in Table2.');
END

COMMIT

Jika tidak, Anda dapat menjalankan baris yang menyinggung dalam kumpulan anak

    EXEC(N'INSERT INTO [dbo].[Table2]([Number], [Name]) VALUES(-1, N''Default value'');')



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menentukan Budaya Invarian saat menggunakan FORMAT() di SQL Server

  2. Fungsi agregat sql untuk mendapatkan daftar

  3. Memilih baris pertama per grup

  4. Tidak dapat masuk ke SQL Server 2008 melalui utilitas baris perintah

  5. Jenis Kursor SQL Server - Apa Perbedaan Kursor LOKAL DAN GLOBAL | Tutorial SQL Server / Tutorial TSQL