Avatar billede puppetmaster Nybegynder
26. november 2003 - 09:42 Der er 14 kommentarer og
1 løsning

Funktion til at oprette felter

Hvordan kan jeg nemmest oprette et ID felt i 35 tabeller?
ID feltet skal være
Type: int
Length: 4
Identity: Yes
Identity Seed: 1
Identity Increment: 1
Avatar billede puppetmaster Nybegynder
26. november 2003 - 09:51 #1
Så langt så godt.

USE "Database 1"
GO 

ALTER TABLE Tabel1 
ADD ID int Identity primary key NOT NULL
GO

Men kan jeg ikke få den til at gøre det automatisk for alle usertables?
Avatar billede puppetmaster Nybegynder
26. november 2003 - 11:00 #2
Kan man lave for-løkker i Query analyzer?
Avatar billede trer Nybegynder
26. november 2003 - 11:48 #3
således:

declare @name varchar(128), @sql varchar(800)
declare crsr cursor local fast_forward for
select name from dbo.sysobjects
where objectproperties(id,'isusertable')
open crsr
fetch next from crsr into @name
while @@fetch_status=00 begin
  set @sql = 'alter table ['+@name+'] add id int identity(1,1) primary key not null'
--execute (@sql)
  print @sql
  print 'go'
  fetch next from crsr into @name
end
close crsr
deallocate crsr

Bemærk at jeg har rem'et execute delen ud - det er sikrere at lade den generere et script som man selv afvikler i hånden...
Avatar billede puppetmaster Nybegynder
26. november 2003 - 12:44 #4
Koden skal indtastes i Query Analyzer, right?
Når jeg så klikker på Kør, får jeg denne fejlmeddelelse:
Server: Msg 195, Level 15, State 10, Line 4
'objectproperties' is not a recognized function name.
Avatar billede trer Nybegynder
26. november 2003 - 13:43 #5
Okay, den hedder ObjectProperty - ental, ikke flertal.
Avatar billede puppetmaster Nybegynder
26. november 2003 - 15:05 #6
Inden jeg tildeler point osv., er det muligt at "inkorporere" ovenstående i SQL Server Enterprise Manageren, fremfor at have det liggende som en "single-fil" som skal åbnes i Query Analyzer?
Avatar billede puppetmaster Nybegynder
26. november 2003 - 15:06 #7
:( :( :(

Server: Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'open'.
Avatar billede puppetmaster Nybegynder
26. november 2003 - 15:07 #8
Koden som den ser ud nu:

declare @name varchar(128), @sql varchar(800)
declare crsr cursor local fast_forward for
select name from dbo.sysobjects
where objectproperty (id,'isusertable')
open crsr
fetch next from crsr into @name
while @@fetch_status=00 begin
  set @sql = 'alter table ['+@name+'] add id int identity(1,1) primary key not null'
--execute (@sql)
  print @sql
  print 'go'
  fetch next from crsr into @name
end
close crsr
deallocate crsr
Avatar billede puppetmaster Nybegynder
26. november 2003 - 15:08 #9
Når jeg markerer det der står til højre for open statement'et (crsr), er der ingen problemer (The command(s) completed successfully)
Avatar billede puppetmaster Nybegynder
26. november 2003 - 15:09 #10
Sætter lige lidt flere point af...
Avatar billede puppetmaster Nybegynder
26. november 2003 - 15:13 #11
I tabellen sysobjects, feltet id, er der kun tal-værdier....kan det være derfor? (aner ikke en ¤%#¤ om SQL Query Analyzeren!)
Avatar billede trer Nybegynder
27. november 2003 - 11:00 #12
declare @name varchar(128), @sql varchar(800)

declare crsr cursor local fast_forward for
select name from dbo.sysobjects
where objectproperty (id,'isusertable')=1

open crsr

fetch next from crsr into @name

while @@fetch_status=00 begin
  set @sql = 'alter table ['+@name+'] add id int identity(1,1) primary key not null'
--execute (@sql)
  print @sql
  print 'go'
  fetch next from crsr into @name
end
close crsr
deallocate crsr

Sådan; Jeg havde ikke mulighed for at teste koden da jeg skrev den :-( Nu er det sket - der manglede "=1" efter ObjectProperty

Mvh
Troels
Avatar billede puppetmaster Nybegynder
28. november 2003 - 08:47 #13
Den kode jeg får ud af ovenstående, vil den ændre noget i mine datatabeller?

alter table [dtproperties] add id int identity(1,1) primary key not null
go
alter table [MSreplication_options] add id int identity(1,1) primary key not null
go
alter table [spt_datatype_info] add id int identity(1,1) primary key not null
go
alter table [spt_datatype_info_ext] add id int identity(1,1) primary key not null
go
alter table [spt_fallback_db] add id int identity(1,1) primary key not null
go
alter table [spt_fallback_dev] add id int identity(1,1) primary key not null
go
alter table [spt_fallback_usg] add id int identity(1,1) primary key not null
go
alter table [spt_monitor] add id int identity(1,1) primary key not null
go
alter table [spt_provider_types] add id int identity(1,1) primary key not null
go
alter table [spt_server_info] add id int identity(1,1) primary key not null
go
alter table [spt_values] add id int identity(1,1) primary key not null
go
Avatar billede puppetmaster Nybegynder
28. november 2003 - 08:56 #14
Sorry, havde valgt den forkerte database i Query Analyzer. Det virker! :)
Avatar billede puppetmaster Nybegynder
28. november 2003 - 08:57 #15
Takker rigtig mange gange for hjælpen, uvurderlig, well, .....i hvert fald 65 point værd! :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester