Wenn ich einen foreign key definiere (bzw. die Beziehung), welchen Befehl muss ich eingeben damit die Beziehung abhängig / unabhängig ist und referentielle unterstützung hat?
ich hab bis jetzt:
ALTER TABLE Person
ADD FOREIGN KEY (p_o_plz)
REFERENCES Ort
;
Hallo Philipp
Ich kenn jetzt den Access SQL-Umfang nicht genau, aber bei MS-SQL gibt es noch das Statement „ON UPDATE CASCADE | NO ACTION“ resp. „ON DELETE CASCADE | NO ACTION“ welche das Verhalten beim Ändern/Löschen des Primary-Keys definieren.
z.B.
ALTER TABLE tblXY ADD
CONSTRAINT fieldFK FOREIGN KEY
(
nameOfFK
) REFERENCES tblABC (
fieldPK
) ON UPDATE CASCADE ON DELETE NO ACTION
Vielleicht hilft dir das weiter
Gruss: Christian
Ein weiteres Problem:
Danke dir!
Nur hab ich jetzt wiedermal folgende Frage: Ich habe jetzt die ganzen Creates inkl. definitionen der Primary Keys und die Alter Tables für die Foreign Keys.
Das sind ca. 40 sql statements… wie kann ich das alles in ein statement verpacken bzw. muss man das mit vba lösen? wenn ja wie??
danke!!
Philipp
Holla.
Das sind ca. 40 sql statements… wie kann ich das alles in
ein statement verpacken bzw. muss man das mit vba lösen? wenn
ja wie??
Ich habe für solche Zwecke eine Tabelle, die ein Memofeld aufweist, in das die Statements geschroben werden. Dann kannst Du eine Prozedur stricken, die die Statements sequentiell abarbeitet :
Public Sub KnallBummZisch()
Dim SQLStatement as String
Dim EingabeTabelle as DAO.Recordset
Set EingabeTabelle=CurrentDB.OpenRecordset("Tabellenname",dbOpenDynaset)
With EingabeTabelle
While Not .EOF
SQLStatement=!dasMemofeldAusDerTabelle
CurrentDB.Execute SQLStatement
.MoveNext
Wend
.Close
End With
Set EingabeTabelle=Nothing
End Sub
Das liest die Tabelle satzweise und führt die SQL-Statements hintereinander aus. Auf einmal geht’s eh nicht … Denk dran, den Verweis auf DAO 3.6 zu setzen , sonst tut’s nicht.
Gruß kw
Danke, du hast mir sehr geholfen!
Meine Lösung wäre ein Makro gewesen, welche die Datenbank von der Größe gleich verdoppelt hätte : ) ABer das is ne elegantere und bessere Lösung, danke!