CREATE TABLE Persons (
ID int PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
如果没有定义约束,如何删除主键?
答案 0 :(得分:5)
"如何删除PK,因为没有定义约束?"
实际上它的一切都像你希望的那样简单:
<controls:AdaptiveGridView Name="AllVideosGridView"
OneRowModeEnabled="True"
MaxHeight="260"
ScrollViewer.HorizontalScrollMode="Enabled"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ItemClick="AllVideosGridView_ItemClick"
Style="{StaticResource MainGridView}"
<...data template and other stuff...>
</controls.........>
答案 1 :(得分:0)
运行此命令以获取约束名称:
SELECT *
FROM user_cons_columns
WHERE table_name = Persons;
然后运行
ALTER TABLE Persons
DROP CONSTRAINT <pk constraint>;
答案 2 :(得分:0)
不要认为你可以在1个SQL命令中完成它,而不知道约束名,但你可以知道约束名,因为在这种情况下它将由系统定义。以SYS....
开头的东西。
或者,您可以使用PLSQL
块来实现相同目标。
请参阅下面的示例了解您的情况。
CREATE TABLE Persons (
ID int PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
查找约束名称
select CONSTRAINT_NAME
From USER_CONSTRAINTS
where table_name='PERSONS'
AND CONSTRAINT_TYPE='P';
OUTPUT:= SYS_C0012152
Drop Constraint
ALTER TABLE PERSONS
DROP CONSTRAINT SYS_C0012152;
注意:约束名SYS_C0012152
未包含在单引号中。
PLSQL Block做同样的事情
declare
sql_stmt varchar2(255);
cons_name varchar2(30);
begin
select CONSTRAINT_NAME
into cons_name
From USER_CONSTRAINTS
where table_name='PERSONS'
AND CONSTRAINT_TYPE='P';
sql_stmt:=' ALTER TABLE PERSONS
DROP CONSTRAINT '||cons_name;
dbms_output.put_line(sql_stmt);
execute immediate sql_stmt;
end;