0

在我的代码中,我有一个例程在启动时进行一些数据库维护,我使用以下代码从表中删除主键。

USE Students EXCLUSIVE
ALTER TABLE Students DROP PRIMARY KEY

如果它只运行一次并且钥匙就在那里,那么生活是美好的。但是,如果它已经被删除,它会生成错误代码 1879,我对其进行测试并执行 RETURN 并且一切正常。

但是,我希望能够在发出 ALTER TABLE 命令之前测试密钥是否存在。

我已经搜索了帮助文件和 MSDN 无济于事,我无法想象没有代码可以检查主键是否存在,但我肯定找不到。

谢谢

4

2 回答 2

1

您可以使用ATAGINFO()TAG()PRIMARY()函数来确定您的主键索引是什么。从 Primary() 的帮助:

CLOSE DATABASES
SET PATH TO (HOME(2) + 'Data\')   && Sets path to database
OPEN DATABASE testdata  && Open testdata database
USE Customer     && Open customer table

FOR nCount = 1 TO 254
   IF !EMPTY(TAG(nCount))  && Checks for tags in the index
   ? TAG(nCount)  && Display tag name
   ? PRIMARY(nCount)     && Display primary status
   ELSE
      EXIT  && Exit the loop when no more tags are found
   ENDIF
ENDFOR

高温高压

于 2013-02-18T20:38:15.493 回答
0

您可以先检查它的存在:

If !Empty(  DBGetProp("Students","TABLE","PrimaryKey") )
  Alter table students drop primary key
endif
于 2013-02-21T14:21:04.200 回答