您想知道如何在Access 2003中使用ON UPDATE CASCADE/ON DELETE CASCADE,ON UPDATE SET NULL/ ON DELETE SET NULL嗎?
您想知道如何在Access 2003中使用ON UPDATE CASCADE/ ON DELETE CASCADE,ON UPDATE SET NULL/ ON DELETE SET NULL。
根據我的測試,ON UPDATE CASCADE/ ON DELETE CASCADE 能夠在adp 數據庫和ANSI92 mdb數據庫中正常使用,然而,ON UPDATE SET NULL/ ON DELETE SET NULL在adp 數據庫和ANSI92 的mdb數據庫中都提示語法錯誤。
以下的信息供您參考:
第一步:把mdb數據庫設爲ANSI92數據庫
=========================
1. 打開mdb數據庫
2. 點擊Tools -> Options -> Tables/Queries -> SQL Server Compatible Syntax (ANSI92) -> This database -> OK.
第二步:在adp 或ANSI92 mdb數據庫中使用ON UPDATE CASCADE/ ON DELETE CASCADE:
方法一:在Query Designer 中創建存儲過程
-----------------------------------------------
1. 打開adp 數據庫。
2. 點擊Objects 下的Queries
3. 創建一個新的存儲過程StoredProcedure1, 切換到SQL View. 輸入以下代碼:
Create PROCEDURE StoredProcedure1
AS
CREATE TABLE Customers (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING(50))
RETURN
4. 創建新的存儲過程StoredProcedure2, 切換到SQL View. 輸入以下代碼:
CREATE PROCEDURE StoredProcedure2
AS
CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE CASCADE ON DELETE CASCADE)
RETURN
注意: 如果是mdb 數據庫,那應該創建兩個新的Query.
Query1 爲以下代碼:
CREATE TABLE Customers (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING(50))
Query2 爲以下代碼:
CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE CASCADE ON DELETE CASCADE)
方法二:創建新的module 並輸入以下代碼:
------------------------------------------
Function test()
Dim sqlstr As String
Dim conn As ADODB.Connection
Set conn = CurrentProject.Connection
sqlstr1 = " CREATE TABLE Customers1 (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING(50))"
sqlstr2 = "CREATE TABLE Orders1 (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId1 FOREIGN KEY (custid) REFERENCES customers1 ON UPDATE CASCADE ON DELETE CASCADE )"
conn.Execute sqlstr1
conn.Execute sqlstr2
Application.RefreshDatabaseWindow
conn.Close
End Function
我將會繼續測試ON UPDATE SET NULL/ ON DELETE SET NULL. 如果有新的進展, 我會盡早讓您知道.
[/CHAPTER]
根據我的測試,ON UPDATE CASCADE/ ON DELETE CASCADE 能夠在adp 數據庫和ANSI92 mdb數據庫中正常使用,然而,ON UPDATE SET NULL/ ON DELETE SET NULL在adp 數據庫和ANSI92 的mdb數據庫中都提示語法錯誤。
以下的信息供您參考:
第一步:把mdb數據庫設爲ANSI92數據庫
=========================
1. 打開mdb數據庫
2. 點擊Tools -> Options -> Tables/Queries -> SQL Server Compatible Syntax (ANSI92) -> This database -> OK.
第二步:在adp 或ANSI92 mdb數據庫中使用ON UPDATE CASCADE/ ON DELETE CASCADE:
方法一:在Query Designer 中創建存儲過程
-----------------------------------------------
1. 打開adp 數據庫。
2. 點擊Objects 下的Queries
3. 創建一個新的存儲過程StoredProcedure1, 切換到SQL View. 輸入以下代碼:
Create PROCEDURE StoredProcedure1
AS
CREATE TABLE Customers (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING(50))
RETURN
4. 創建新的存儲過程StoredProcedure2, 切換到SQL View. 輸入以下代碼:
CREATE PROCEDURE StoredProcedure2
AS
CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE CASCADE ON DELETE CASCADE)
RETURN
注意: 如果是mdb 數據庫,那應該創建兩個新的Query.
Query1 爲以下代碼:
CREATE TABLE Customers (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING(50))
Query2 爲以下代碼:
CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE CASCADE ON DELETE CASCADE)
方法二:創建新的module 並輸入以下代碼:
------------------------------------------
Function test()
Dim sqlstr As String
Dim conn As ADODB.Connection
Set conn = CurrentProject.Connection
sqlstr1 = " CREATE TABLE Customers1 (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING(50))"
sqlstr2 = "CREATE TABLE Orders1 (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId1 FOREIGN KEY (custid) REFERENCES customers1 ON UPDATE CASCADE ON DELETE CASCADE )"
conn.Execute sqlstr1
conn.Execute sqlstr2
Application.RefreshDatabaseWindow
conn.Close
End Function
我將會繼續測試ON UPDATE SET NULL/ ON DELETE SET NULL. 如果有新的進展, 我會盡早讓您知道.
[/CHAPTER]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.