精华内容
下载资源
问答
  • oracle设置主键的方法:1、在创建表时...oracle设置主键的方法:一、什么是主键主键(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。所谓的复合主键,就是指你表的主键含有一个以上...

    oracle设置主键的方法:1、在创建表时定义主键 ,代码为【constraint TF_B_AIR_CONFIG_PK primary key(TYPE_ID)】;2、在创建表后,使用alter table语法设置主键。

    6a1c527bf792b5e25cc4882ad9bfb8f7.png

    oracle设置主键的方法:

    一、什么是主键

    主键(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。

    所谓的复合主键,就是指你表的主键含有一个以上的字段组成。 如果表里没有可以当唯一主键,可以使用复合主键,确定一条记录的唯一性。

    二、创建主键两种方式

    第一种, 在创建表时定义主键

    单列主键示例:----创建TF_B_AIR_CONFIG表

    create table ECS_STORE.TF_B_AIR_CONFIG(

    TYPE_ID VARCHAR2(20) not null,

    PROVINCE_CODE VARCHAR2(4) not null,

    PARAMETER_TYPE VARCHAR2(2) not null,

    LIMIT_NUM VARCHAR2(4) not null,

    EFFECTIVE_FALG VARCHAR2(2) default '1',

    UPDATE_TIME DATE default sysdate,

    constraint TF_B_AIR_CONFIG_PK primary key(TYPE_ID)--单列主键

    )

    复合主键示例:----创建TF_B_AIR_CONFIG表

    create table ECS_STORE.TF_B_AIR_CONFIG(

    TYPE_ID VARCHAR2(20) not null,

    PROVINCE_CODE VARCHAR2(4) not null,

    PARAMETER_TYPE VARCHAR2(2) not null,

    LIMIT_NUM VARCHAR2(4) not null,

    EFFECTIVE_FALG VARCHAR2(2) default '1',

    UPDATE_TIME DATE default sysdate,

    constraint TF_B_AIR_CONFIG_PK primary key(TYPE_ID , PROVINCE_CODE)--复合主键

    )

    第二种, 在创建表后,使用alter table语法

    语法ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (col1, col2,...coln);

    示例----创建TF_B_AIR_CONFIG表

    create table ECS_STORE.TF_B_AIR_CONFIG(

    TYPE_ID VARCHAR2(20) not null,

    PROVINCE_CODE VARCHAR2(4) not null,

    PARAMETER_TYPE VARCHAR2(2) not null,

    LIMIT_NUM VARCHAR2(4) not null,

    EFFECTIVE_FALG VARCHAR2(2) default '1',

    UPDATE_TIME DATE default sysdate

    )--单列主键

    alter table ECS_STORE.TF_B_AIR_CONFIG add constraint TF_B_AIR_CONFIG_PK primary key (TYPE_ID);

    --联合主键

    alter table ECS_STORE.TF_B_AIR_CONFIG add constraint TF_B_AIR_CONFIG_PK primary key (TYPE_ID , PROVINCE_CODE);

    展开全文
  • 一个表有主键,是自增的,我想给表的另一个字段设置主键,设置成自增从10000开始自增,在网上找了好多资料都是设置主键的,没有其他字段的,想问下如何写?一个表只能有一个 自增键(有索引即可一般设为唯一索引,不...

    如何给除了主键外的字段设置自增?

    一个表有主键,是自增的,

    我想给表的另一个字段设置主键,设置成自增从10000开始自增,

    在网上找了好多资料都是设置主键的,没有其他字段的,想问下如何写?

    一个表只能有一个 自增键(有索引即可

    一般设为唯一索引

    ,不要求主键)。

    如果你的主键已经是自增了,那么这个表不能再有自增键了。

    如果你的主键是非自增的,那么可以设置一个

    ALTER TABLE `weibo`

    ADD COLUMN `serial`  bigint UNSIGNED NOT NULL AUTO_INCREMENT AFTER `id`,

    ADD INDEX `serial` (`serial`) USING BTREE,

    AUTO_INCREMENT=94381;

    mysql中只能设置一列为自增长,这一列可以是主键,也可以不是主键,如果不是主键,则必须将其设置为一种键(key,即索引)。自增的开始值为表属性,不是字段属性,所以需要在表属性中设置,如要设置自增开始值为10000

    create table test(

    id int not null,

    noid int not null auto_increment,

    primary key(id), --如果主键设置了自增长,那么其他列就不能在设置自增长了

    key(noid) -- 如果给其他列设置自增长,那么必须为其创建一个索引,索引类型有很多,自行查资料

    )engine=xxx auto_increment=10000;

    可以通过创建一个

    insert

    触发器解决,即使主键有自增也无妨。

    比如表名

    tab1

    要求自增字段

    ac

    CREATE TRIGGER `tab1_before_insert` BEFORE INSERT ON `tab1` FOR EACH ROW BEGIN

    SET @x:=(SELECT MAX(ac) FROM tab1);

    SET NEW.ac = @x + 1;

    END

    在表上加个触发器:

    CREATE TRIGGER tri_test

    BEFORE INSERT

    ON test –test要操作的表

    FOR EACH ROW

    declare

    v_test varchar(30);

    BEGIN

    if inserting then

    select seq_test.nextval into v_test from dual;   --设立了一个序列,自动获取序列下一个值:

    :new.col_test:= v_test;--赋值给自增字段

    end if;

    END;

    可以把时间戳当主键用,这玩意本来就是自增的,然后你再设置另一个字段自增……如果插入速度不是很快的话……一般没人这么用吧……

    展开全文
  • 我有一个带有一些字段的表,第一个是我的主键,称为“令牌”.我需要该令牌不是自动的,所以,我想设置这个值.例如,$em = $this->getDoctrine()->getManager();$object->setToken("first");$object->setValue...

    我有一个带有一些字段的表,第一个是我的主键,称为“令牌”.

    我需要该令牌不是自动的,所以,我想设置这个值.例如,

    $em = $this->getDoctrine()->getManager();

    $object->setToken("first");

    $object->setValue("123");

    $em->persist($object);

    $em->flush();

    但是,在我的数据库中,始终令牌为空,¿为什么?当我刷新时,令牌值消失.

    在我的实体中,令牌被声明:

    /**

    * @var string

    *

    * @ORM\Column(name="token", type="string", length=45, nullable=false)

    * @ORM\Id

    */

    private $token;

    /**

    * Set token

    *

    * @param string $token

    * @return Downloads

    */

    public function setToken($token)

    {

    $this->token = $token;

    return $this;

    }

    /**

    * Get token

    *

    * @return string

    */

    public function getToken()

    {

    return $this->token;

    }

    我需要帮助!

    提前致谢.

    展开全文
  • 补充:表中已经有主键字段“id”,所以不能将“serial_num”设置为auto_increment。 所以请问各位有什么简便的思路吗? ============================================== 补充:(使用触发器后,我尝试一下...
  • 如果您应该在旧数据库上使用django,则不能修改数据库模式有一个解决方法(丑陋的)来解决这个问题覆盖模型保存或删除功能# use raw sql statement to save or delete objectclass BaseModel(models.Model):def get_...

    如果您应该在旧数据库上使用django,则不能修改数据库模式

    有一个解决方法(丑陋的)来解决这个问题

    覆盖模型保存或删除功能# use raw sql statement to save or delete object

    class BaseModel(models.Model):

    def get_max_length_unique_key(self):

    max_len_unique_key = []

    for unique_key in self._meta.unique_together:

    if len(unique_key) > len(max_len_unique_key):

    max_len_unique_key = unique_key

    return max_len_unique_key

    def get_db_conn(self):

    db_cnn = DbManage(db_ip, db_port, DATABASES_USER, DATABASES_PASSWORD, self._meta.db_table)

    db_cnn.connect()

    return db_cnn

    def save(self, *args, **kwargs):

    self.delete()

    cnn, databasename = self.get_db_conn()

    update_tables = self._meta.db_table

    key_list = ""

    values_list = ""

    for field in self._meta.fields:

    key_list += "%s," % field.name

    values_list += "\'%s\'," % str(getattr(self, field.name))

    key_list = key_list[:len(key_list) - 1]

    values_list = values_list[:len(values_list) - 1]

    sql = "insert into %s(%s) values(%s)" % (update_tables, key_list, values_list)

    logger.info("insert new record to %s" % databasename)

    cnn.excute_sql(sql)

    cnn.close()

    def delete(self, *args, **kwargs):

    cnn = self.get_db_conn()

    update_tables = self._meta.db_table

    sql = "delete from %s where " % update_tables

    for uk in self.get_max_length_unique_key():

    sql += "%s=\'%s\' and " % (uk, getattr(self, uk))

    sql = sql[:len(sql) - 4]

    logger.info("delete record from %s" % update_tables)

    cnn.excute_sql(sql)

    cnn.close()

    pass

    class Meta:

    abstract = True

    class ImageList(BaseModel):

    field1 = models.CharField(primary_key=True, max_length=30)

    field2 = models.CharField(primary_key=True, max_length=30)

    field3 = models.CharField(primary_key=True, max_length=30)

    body = models.CharField(max_length=2000, blank=True, null=True)

    updated_on = models.DateTimeField(blank=True, null=True)

    class Meta:

    managed = True

    db_table = 'image_list'

    unique_together = (('field1', 'field2', 'field3'),)

    展开全文
  • 如果您应该在旧版数据库上使用django,则无法修改db_schema有一种解决方法(丑陋的)方法可以解决此问题覆盖模型的保存或删除功能# use raw sql statement to save or delete objectclass BaseModel(models.Model):def...
  • oracle设置主键的方法:1、在创建表时...oracle设置主键的方法:一、什么是主键主键(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。所谓的复合主键,就是指你表的主键含有一个以上...
  • 在MySQL中如何使非主键字段自增长

    千次阅读 2017-12-10 17:11:50
    我在为学校做一个实现用户能对图片的上传下载网站时,由于要求用户注册时使用自己的学号作为自己的账号,所以在MySQL数据库中只能将学号(user_id)这个...然后百度一下报错原因,原来是由于非主键或索引不能设置为自增长
  • MySQL中很重要的是要设置好主键,主键不能重复,而且主键的重要性在于可以区分外键,在一个数据表中主键只能是唯一的,那么如何设置主键呢?主键没有着明确的概念定义,其是索引的一种,并且是唯一性索引的一种,且...
  • 我想给表的另一个字段设置主键,设置成自增从10000开始自增 mysql中只能设置一列为自增长,这一列可以是主键,也可以不是主键,如果不是主键,则必须将其设置为一种键(key,即索引)。 ALTER TABLE `weibo` ADD ...
  • 在使用文本导入器批量导入数据时,如果需要设置主键自增长,可以先创建一个序列: create sequenceSEQ_...然后在导入时设置主键字段的sql函数为:SEQ_Userinf.nextval就可以了。 转载于:https://www.cnblogs.com...
  • 1,为当前已有的表添加新的字段alter...2,为当前已有的表中的字段设置主键自增alter table student add constraint PK_studentId primaryKey(studentId);3,为当前已有的表中的字段设置为外键alter table student ...
  • 在添加或变更表结构时,把id字段设置为整型,下面的选项就会出现“自动递增”autoincrement的选择框,勾选中就可以了。 int类型 有时候我们不需要id自增 char类型 ...
  • 【数据库】如何设置自增字段

    千次阅读 热门讨论 2015-04-02 20:13:58
    之前敲三层的时候遇到这样一个问题:“违反了PRIMARY KEY约束... 那到底如何设置自增字段呢? (1)将字段的数值类型设置为int(只有是整型的时候才可以自动增值) (2)将默认值设置为空 (3)将标识规范设
  • MySQL如何设置自增主键

    万次阅读 2019-05-21 21:59:40
    在初次使用MySQL数据库的时候,或者习惯了使用Oracle数据库(无自增主键),许多小伙伴不知道该如何给MySQL数据库中的相应表中的字段设置自增主键,这里给大家分享一下解决方案: 第一种情况:在创建表的时候使用...
  • 主键、外键和索引的区别?...该字段没有重复值,但可以有一个空值 作用: 用来保证数据完整性 用来和其他表建立联系用的 是提高查询排序的速度 个数: 主键只能有一个 一个表可以有多个外键 一个表可以有多个
  • 字段没有重复值,但可以有一个空值 作用: 用来保证数据完整性 用来和其他表建立联系用的 是提高查询排序的速度 个数: 主键只能有一个 一个表可以有多个外键 一个表可以有多个
  • 满意答案有时候我们在测试网站的时候,删除测试数据导致id不是从0开始,那如果想id是从0开始怎么办呢?mysql默认自增ID是从1开始了,但当我们如果有插入表或使用...通常的设置自增字段的方法,创建表格时添加:crea...
  • 主键、外键和索引的区别?主键外键索引定义:唯一标识一条...主键只能有一个一个表可以有多个外键一个表可以有多个惟一索引设置索引若要设置外键,在参照表(pc表) 和被参照表(parts表)中,相对应的两个字段必须都设...
  • CREATE TABLE `表名` (  `createTime` timestamp NOT NULL ...以上SQL语句将记录语句创建的时间,(时间为当前系统时间)并将这一列的属性设置为“创建时间”。 `gid` int(6) unsigned NOT NULL auto_increment,
  • 知乎@极客小俊,官方首发原创文章在使用auto_increment时,应该注意一个小问题, 当进行delete from 表名称 清空表的时候,重新插入数据 , 发现auto_increment主键字段计数不是从1开始的,而是接着最新插入的数据id...
  • 主键、外键和索引的区别?主键外键索引定义:唯一标识一条...主键只能有一个一个表可以有多个外键一个表可以有多个惟一索引设置索引若要设置外键,在参照表(pc表) 和被参照表(parts表)中,相对应的两个字段必须都设...
  • 主键、外键和索引的区别?主键外键索引定义:唯一标识一条...主键只能有一个一个表可以有多个外键一个表可以有多个惟一索引设置索引若要设置外键,在参照表(pc表) 和被参照表(parts表)中,相对应的两个字段必须都设...
  • 首发.png使用navicat创建postgresql数据库的表时如何设定主键自增?我们知道,在navicat中MySQL 里面有auto_increment 自增字段PostgreSQL没有自增字段这一说法,但是有单独的对象:序列。 可以用序列或者其他方法来...
  • 字段没有重复值,但可以有一个空值 作用: 用来保证数据完整性 用来和其他表建立联系用的 是提高查询排序的速度 个数: 主键只能有一个 一个表可以有多个外键 一个表可以有多个...
  • mysql 中有时候会遇到多个字段来表示数据的唯一性,那么这里就会用到组合主键了。相关mysql视频教程推荐:《mysql教程》1.编写创建表sql代码;2.设置联合主键;3.执行代码,发现出现错误;4.解决方案:给id自增列加...
  • 主键自增长列在进行数据插入的时候,很有用的,如可以获取返回的自增ID值,接下来将介绍SQL Server如何设置主键自增长列,感兴趣的朋友可以了解下,希望本文对你有所帮助 1.新建一数据表,里面有字段id,将id设为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 542
精华内容 216
关键字:

如何设置主键字段