SQL изменить создать, чтобы изменить синтаксические ошибки - PullRequest
0 голосов
/ 30 апреля 2020

Мне прислали код sql:

create table dbo.Dokumendid(
  id               int identity not Null primary key,
  idPersonal       int not Null references dbo.Personal on delete cascade,
  Liik             char(1) Not Null,                        -- Liik: L - lepingud, K - koolitused, T - tervisetõendid    
  FailiNimetus     nvarchar(200) not null,                  -- faili nimetus
  LaadimiseKpv     smalldatetime null,                      -- laadimise kpv
  Fail             varbinary(max) null,                     -- fail
  Markus           nvarchar(max) Null,                      -- märkus
  dtCreated        datetime default GetDate() Null,
  UserNameCreated  nvarchar(50) null,
  dtUpdated        datetime  null,
  UserNameUpdated  nvarchar(50) null
)
Go
create index IX_Personal on dbo.Dokumendid(idPersonal) on INDEXES
Go

Но у нас уже есть таблица dbo.Dokumendid, поэтому, когда я изменяю создание на изменение, я получаю ошибку:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '('.
Msg 102, Level 15, State 1, Line 15
Incorrect syntax near '('.

I измените его на: изменить таблицу dbo.Dokumendid ошибка изменения столбца:

Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'identity'.
Msg 102, Level 15, State 1, Line 15
Incorrect syntax near '('.

1 Ответ

1 голос
/ 30 апреля 2020

Если вы хотите добавить встроенный внешний ключ:

create table dbo.Dokumendid(
  id               int identity not Null primary key,
  idPersonal       int not Null, --references dbo.Personal on delete cascade,
  Liik             char(1) Not Null,                        -- Liik: L - lepingud, K - koolitused, T - tervisetõendid    
  FailiNimetus     nvarchar(200) not null,                  -- faili nimetus
  LaadimiseKpv     smalldatetime null,                      -- laadimise kpv
  Fail             varbinary(max) null,                     -- fail
  Markus           nvarchar(max) Null,                      -- märkus
  dtCreated        datetime default GetDate() Null,
  UserNameCreated  nvarchar(50) null,
  dtUpdated        datetime  null,
  UserNameUpdated  nvarchar(50) null,
  CONSTRAINT FK_Dokumendid_idPersonal FOREIGN KEY (idPersonal) REFERENCES dbo.Personal (idPersonal) on delete cascade
)
Go

Кроме того, вы также можете добавить создание индекса онлайн (с SQL Server 2014):

create table dbo.Dokumendid(
  id               int identity not Null primary key,
  ...
  CONSTRAINT FK_Dokumendid_idPersonal FOREIGN KEY (idPersonal) REFERENCES dbo.Personal (idPersonal) on delete cascade,
  index IX_Personal(idPersonal)
)
Go
...