Oracle如果不存在主键则创建主键,存在则忽略
时间: 2024-01-01 14:06:41 浏览: 45
在 Oracle 中,可以使用以下 SQL 语句来判断表是否存在主键,若不存在则创建主键,存在则忽略:
```
DECLARE
cnt NUMBER;
BEGIN
SELECT COUNT(*) INTO cnt FROM user_constraints
WHERE table_name = 'table_name' AND constraint_type = 'P';
IF cnt = 0 THEN
ALTER TABLE table_name ADD CONSTRAINT pk_constraint_name PRIMARY KEY (column_name);
END IF;
END;
```
其中,`table_name` 是要创建主键的表名,`pk_constraint_name` 是要创建的主键约束名,`column_name` 是要作为主键的列名。
该 SQL 语句首先查询 `user_constraints` 系统视图,判断表是否存在主键。如果不存在,则使用 `ALTER TABLE` 语句创建主键;如果存在,则不执行任何操作。注意,该语句需要在 PL/SQL 块中执行。
相关问题
oracle如果表不存在创建
你可以使用如下的 SQL 语句来创建一张表:
```sql
CREATE TABLE table_name (
column1 datatype1,
column2 datatype2,
column3 datatype3,
.....
);
```
如果你想要在创建表之前先检查该表是否已经存在,可以使用如下的语句:
```sql
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[table_name]') AND type in (N'U'))
BEGIN
CREATE TABLE table_name (
column1 datatype1,
column2 datatype2,
column3 datatype3,
.....
);
END
```
这个语句会先检查表是否已经存在,如果不存在则会创建表。如果表已经存在,那么该语句就会被忽略。
oracle 判断记录不存在则新增
在Oracle中,可以使用条件语句和合适的SQL语句来判断记录是否存在并进行相应的操作。下面是一种实现方式:
首先,我们可以使用SELECT语句来查询符合条件的记录是否存在。例如,假设我们有一个名为"table_name"的表,其中有一个名为"column_name"的列,我们要判断某个特定的值是否存在,可以使用以下语句:
SELECT column_name
FROM table_name
WHERE column_name = '特定的值';
这个语句将返回所有满足条件的记录,如果返回的记录为空,则表明该记录不存在。
接下来,我们可以根据上述查询结果来判断是否新增记录。如果查询结果为空,说明记录不存在,我们可以使用INSERT语句来新增记录。例如,假设我们要向上述的表中插入一条新纪录,可以使用以下语句:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
其中,column1、column2、column3等是表中的列名,value1、value2、value3等是对应列的值。
综上所述,我们可以使用SELECT语句查询是否存在记录,如果查询结果为空,说明记录不存在,则可以使用INSERT语句新增记录。