高分求教!!!!!!!!!!!!
13 个解决方案
#1
示例:
ALTER TABLE tblShipping
ADD CONSTRAINT FK_tblShipping
FOREIGN KEY (CustomerID) REFERENCES
tblCustomers (CustomerID)
ON UPDATE CASCADE
ON DELETE CASCADE
ALTER TABLE tblShipping
ADD CONSTRAINT FK_tblShipping
FOREIGN KEY (CustomerID) REFERENCES
tblCustomers (CustomerID)
ON UPDATE CASCADE
ON DELETE CASCADE
#2
帮顶!
#3
wwwwb() ( ):
你的此法有实际运行过吗?
我的用法完全相同,但运行只要一见到ON是叫语法错误!不管是ON什么!我仔细看我写的SQL,及HELP文件里的说明,我并没有发现我的语句有什么错误。
你的此法有实际运行过吗?
我的用法完全相同,但运行只要一见到ON是叫语法错误!不管是ON什么!我仔细看我写的SQL,及HELP文件里的说明,我并没有发现我的语句有什么错误。
#4
可能是Access的bug吧
#5
运行过,没有问题。
#6
to wwwwb():
示例:
ALTER TABLE tblShipping
ADD CONSTRAINT FK_tblShipping
FOREIGN KEY (CustomerID) REFERENCES
tblCustomers (CustomerID)
ON UPDATE CASCADE
ON DELETE CASCADE
这句提示“CONSTRAINT 子句语法错误”。
示例:
ALTER TABLE tblShipping
ADD CONSTRAINT FK_tblShipping
FOREIGN KEY (CustomerID) REFERENCES
tblCustomers (CustomerID)
ON UPDATE CASCADE
ON DELETE CASCADE
这句提示“CONSTRAINT 子句语法错误”。
#7
用ADO执行试试。
#8
上述问题我问过微软的中国部的工程师,他们解释为上述代码是针对 ADP 的 ANSI 92 规范的。
在 MDB 中无法应用。
不过我不是很相信中国的工程师
在 MDB 中无法应用。
不过我不是很相信中国的工程师
#9
贴给你我和微软的EMAIL
根据您的描述,我对您问题的理解是: 您想知道如何在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]
根据您的描述,我对您问题的理解是: 您想知道如何在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]
#10
这个问题我已经追了一年了,没下文
#11
changechange:
三颗星就是不一样,用此法问题解决,我现在还不需要SET NULL。
THANKS!!!!!!!!!
三颗星就是不一样,用此法问题解决,我现在还不需要SET NULL。
THANKS!!!!!!!!!
#12
学习ing
#13
很高兴,见者有分!!!
#1
示例:
ALTER TABLE tblShipping
ADD CONSTRAINT FK_tblShipping
FOREIGN KEY (CustomerID) REFERENCES
tblCustomers (CustomerID)
ON UPDATE CASCADE
ON DELETE CASCADE
ALTER TABLE tblShipping
ADD CONSTRAINT FK_tblShipping
FOREIGN KEY (CustomerID) REFERENCES
tblCustomers (CustomerID)
ON UPDATE CASCADE
ON DELETE CASCADE
#2
帮顶!
#3
wwwwb() ( ):
你的此法有实际运行过吗?
我的用法完全相同,但运行只要一见到ON是叫语法错误!不管是ON什么!我仔细看我写的SQL,及HELP文件里的说明,我并没有发现我的语句有什么错误。
你的此法有实际运行过吗?
我的用法完全相同,但运行只要一见到ON是叫语法错误!不管是ON什么!我仔细看我写的SQL,及HELP文件里的说明,我并没有发现我的语句有什么错误。
#4
可能是Access的bug吧
#5
运行过,没有问题。
#6
to wwwwb():
示例:
ALTER TABLE tblShipping
ADD CONSTRAINT FK_tblShipping
FOREIGN KEY (CustomerID) REFERENCES
tblCustomers (CustomerID)
ON UPDATE CASCADE
ON DELETE CASCADE
这句提示“CONSTRAINT 子句语法错误”。
示例:
ALTER TABLE tblShipping
ADD CONSTRAINT FK_tblShipping
FOREIGN KEY (CustomerID) REFERENCES
tblCustomers (CustomerID)
ON UPDATE CASCADE
ON DELETE CASCADE
这句提示“CONSTRAINT 子句语法错误”。
#7
用ADO执行试试。
#8
上述问题我问过微软的中国部的工程师,他们解释为上述代码是针对 ADP 的 ANSI 92 规范的。
在 MDB 中无法应用。
不过我不是很相信中国的工程师
在 MDB 中无法应用。
不过我不是很相信中国的工程师
#9
贴给你我和微软的EMAIL
根据您的描述,我对您问题的理解是: 您想知道如何在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]
根据您的描述,我对您问题的理解是: 您想知道如何在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]
#10
这个问题我已经追了一年了,没下文
#11
changechange:
三颗星就是不一样,用此法问题解决,我现在还不需要SET NULL。
THANKS!!!!!!!!!
三颗星就是不一样,用此法问题解决,我现在还不需要SET NULL。
THANKS!!!!!!!!!
#12
学习ing
#13
很高兴,见者有分!!!