Alter Table mit Variable

dila71

Mitglied
Hallo,

ich habe das folgende Problem.

Ich habe 3 Tabellen A, PP und PL von denen A schon besteht.
Die Tabellen PP und PL verbindet eine 1:n Beziehung, die Tabelle PP und A ebenfalls (in Objekten: PP besteht aus mehreren PLs und gehört selber zu ein oder mehreren As).

Ich erstelle die Tabellen PP und PL und erzeuge jeweils ein Standardeintrag.

Code:
/*PP_Tabelle anlegen*/
create table PP (
  PP_ID [uniqueidentifier] CONSTRAINT DF_PP_PP_ID DEFAULT newid(),
  PP_Name varchar(50),
  CONSTRAINT pk_PP primary key ( PP_ID )
)

/*PL_Tabelle anlegen*/
create table PaymentLevel (
  PL_ID [uniqueidentifier] CONSTRAINT df_PL_PL_ID DEFAULT newid(),
  PP_ID [uniqueidentifier] CONSTRAINT fk_PL_PP foreign key references PP (PP_ID)
  ...,
  CONSTRAINT pk_PL primary key ( PL_ID )
)


/*Erstes PP ZERO anlegen*/
declare @profile [uniqueidentifier]
select @profile=newid()
insert into PP (PP_ID, PP_Name) values (@profile, 'zero')


/*Erstes PL für ZERO anlegen*/
insert into PaymentLevel (PP_ID) values (@profile)

Das funktioniert prima.
Nun zum Problem, Tabelle A soll eine neue Spalte bekommen, welche ein Fremdschlüssel auf PP_ID in PP ist und deren Defaulwert die ID des sowben erzeugten Eintrags ist.

Mein Versuch war der folgende:
Code:
/*Neue Spalte und Defaultwert für PP zu A hinzufügen*/
alter table A 
  add PP_ID [uniqueidentifier] CONSTRAINT df_A_PP_ID DEFAULT @profile

Ergebnis
Variablen sind in der ALTER TABLE-Anweisung nicht zulässig

Da ich das aber auf mehreren Datenbanken machen muss, würde ich es schon gern dynamisch machen.
Kann jemand helfen?

Tschau und Danke
Dila
 
Zurück