精华内容
下载资源
问答
  • 一行或多行中包含违反非空、唯一或外键约束“ 刚开始一味的调试前台,在后台cpp里添加日志查看 ,想要的数值得到了,但是再添加时 (出现报错“关于未能启用约束。一行或多行中包含违反非空、唯一或外键约束的...

      今天在做项目时遇到的小问题。

       ”关于未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值“  

    刚开始一味的调试前台,在后台cpp里添加日志查看 ,想要的数值得到了,但是再添加时 (出现报错“关于未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值”),但是

    竟然添加进去了!  在查询一遍 又报错(“需要清除数据集。。。。。什么的”)。

    上网着解决方案,猛一下想起来自己修改过数据库中的字符串长度,而在DataSet中并没有修改与数据库对应的数值长度。

    修改后发现--问题解决了!!!

    对应解决方案:

    1.查看数据库中字段长度是否与所需要的数值(指自己想要的值)长度对应。

    2.查看数据集中的字段长度是否与数据库中数值长度对应。

     

    转载于:https://www.cnblogs.com/Xtudou/p/9133566.html

    展开全文
  • 而且在主表的记录发生变化导致外键参考唯一约束值发生了变化时,定义了一系列的动作。在SQL92标准中定义了几种外键改变后,如何处理子表记录的动作,其中包括:限制Restrict:这种方式不允许对被参考的记录的键值...

    Oracle的外键用来限制子表中参考的字段的值,必须在主表中存在。而且在主表的记录发生变化导致外键参考唯一约束值发生了变化时,定义了一系列的动作。

    在SQL92标准中定义了几种外键改变后,如何处理子表记录的动作,其中包括:

    限制Restrict:这种方式不允许对被参考的记录的键值执行更新或删除的操作;

    置为空Set to null:当参考的数据被更新或者删除,那么所有参考它的外键值被置为空;

    置为默认值Set to default:当参考的数据被更新或者删除,那么所有参考它的外键值被置为一个默认值;

    级联Cascade:当参考的数据被更新,则参考它的值同样被更新,当参考的数据被删除,则参考它的子表记录也被删除;

    不做操作No action:这种方式不允许更新或删除被参考的数据。和限制方式的区别在于,这种方式的检查发生在语句执行之后。Oracle默认才会的方式就是这种方式。

    Oracle明确支持的方式包括No action、Set to null和Cascade。对于Set to Default和Restrict,Oracle的约束类型并不直接支持,不过可以通过触发器来实现。

    简单看一下Oracle的默认处理方式No action:

    SQL> CREATE TABLE T_P (ID NUMBER, NAME VARCHAR2(30));

    表已创建。

    SQL> ALTER TABLE T_P ADD PRIMARY KEY (ID);

    表已更改。

    SQL> CREATE TABLE T_C (ID NUMBER, FID NUMBER, NAME VARCHAR2(30));

    表已创建。

    SQL> ALTER TABLE T_C ADD CONSTRAINT FK_T_C

    2  FOREIGN KEY (FID)

    3  REFERENCES T_P (ID);

    表已更改。

    SQL> INSERT INTO T_P VALUES (1, 'A');

    已创建1行。

    SQL> INSERT INTO T_P VALUES (2, 'B');

    已创建1行。

    SQL> INSERT INTO T_C VALUES (1, 1, 'A');

    已创建1行。

    SQL> COMMIT;

    提交完成。

    对于No Action操作而言,如果主键的记录被外键所参考,那么主键记录是无法更新或删除的。

    SQL> DELETE T_P WHERE ID = 1;

    DELETE T_P WHERE ID = 1

    *

    第1行出现错误:

    ORA-02292:违反完整约束条件(YANGTK.FK_T_C) -已找到子记录日志

    SQL> UPDATE T_P SET ID = 3 WHERE ID = 1;

    UPDATE T_P SET ID = 3 WHERE ID = 1

    *

    第1行出现错误:

    ORA-02292:违反完整约束条件(YANGTK.FK_T_C) -已找到子记录日志

    SQL> DELETE T_P WHERE ID = 2;

    已删除1行。

    不过No Action又和Restrict操作有所区别,No Action允许用户执行语句,在语句执行之后,或者事务结束的时候才会检查是否违反约束。而Restrict只有检测到有外键参考主表的记录,就不允许删除和更新的操作执行了。

    这也使得No Action操作支持延迟约束:

    SQL> ALTER TABLE T_C DROP CONSTRAINT FK_T_C;

    表已更改。

    SQL> ALTER TABLE T_C ADD CONSTRAINT FK_T_C

    2  FOREIGN KEY (FID)

    3  REFERENCES T_P (ID)

    4  DEFERRABLE INITIALLY DEFERRED;

    表已更改。

    SQL> SELECT * FROM T_P;

    ID NAME

    ---------- ------------------------------

    1 A

    SQL> SELECT * FROM T_C;

    ID        FID NAME

    ---------- ---------- ------------------------------

    1         1 A

    SQL> DELETE T_P WHERE ID = 1;

    已删除1行。

    SQL> INSERT INTO T_P VALUES (1, 'A');

    已创建1行。

    SQL> COMMIT;

    提交完成。

    展开全文
  • 外键约束 外键必须是另一个表的主键。 外键的作用: 1.实体完整性,确保每个实体是唯一的(通过主键来实施) 2.域完整性,确保属性只从一套可选的集合里选择 3.关联完整性,确保每个外键或null或含有与相关主键...

    外键约束

    外键必须是另一个表的主键。
    外键的作用:
    1.实体完整性,确保每个实体是唯一的(通过主键来实施)
    2.域完整性,确保属性值只从一套可选的集合里选择
    3.关联完整性,确保每个外键或null或含有与相关主键值相配的值
    foreign key 约束的主要目的是控制存储再外键表中的数据,但它还可以控制对主键表中数据的修改。
    

    外键是用来控制数据库中数据的完整性的,就是当你对一个表的数操作时,和它关联的一个或多个表的数据同时发生改变。

    创建外键约束

    例题:在audit表上创建外键约束,其emp_no对应employees_test表的主键id。

    create table audit (
    EMP_no int NOT NULL,
    create_date datetime NOT NULL,
    foreign key(EMP_no)
    references employees(id)
    );
    
    展开全文
  • 外键约束

    2021-01-05 22:33:40
    外键约束 在新表中添加外键约束语法: constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名) 在已有表中添加外键约束:alter table 从表表名 add constraints 外键约束名称 ...

    外键约束

    • 在新表中添加外键约束语法: constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名)

    • 在已有表中添加外键约束:alter table 从表表名 add constraints 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名)

    • 删除外键语法: alter table 从表表名 drop foreign key 外键名称;

    • 级联操作:

      • 注意:

        在从表中,修改关联主表中不存在的数据,是不合法的

        在主表中,删除从表中已经存在的主表信息,是不合法的。直接删除主表(从表中有记录数据关联) 会包删除失败。

      • 概念: 在修改或者删除主表的主键时,同时它会更新或者删除从表中的外键值,这种 动作我们称之为级联操作。

      • 语法:

        • 更新级联 on update cascade 级联更新 只能是创建表的时候创建级联关系。当更新主表中的主键,从表中的外键字段会同步更新。
        • 删除级联 on delete cascade 级联删除 当删除主表中的主键时,从表中的含有该字段的记录值会同步删除。
      • 操作:

        -- 给从表student添加级联操作
        create table student(
            s_id int PRIMARY key ,
            s_name VARCHAR(10) not null,
            s_c_id int,
        -- constraint  外键约束名称  foreign key(外键的字段名称)  references 主表表名(主键字段名)
        	 CONSTRAINT	stu_cour_id FOREIGN key(s_c_id)	REFERENCES	course(c_id)				-- 给s_c_id 添加外键约束
        	 ON UPDATE CASCADE	ON DELETE CASCADE
        )
        
        insert into student VALUE(1,'小孙',1),(2,'小王',2),(3,'小刘',4);
        insert into student VALUE(4,'小司马',1),(5,'小赵',1),(6,'小钱',1);
        
        -- 查询学生表中的记录
        select * from student;
        
        -- 级联操作。
        -- 更新级联  on update cascade   级联更新 只能是创建表的时候创建级联关系。当更新主表中的主键,从表中的外键字段会同步更新。
        update course set c_id = 10 where c_id = 1;
        -- 删除级联  on delete cascade   级联删除  当删除主表中的主键时,从表中的含有该字段的记录值会同步删除。
        
        delete from course where c_id = 10;
        

    约束总结

    约束名 关键字 描述
    主键 primary key 唯一不为空
    默认 default 插入数据,该字段没有赋值,系统会自动赋指定的默认值
    非空 not null 该字段不能为null(空)
    唯一 unique 该字段的值在整个表中只能出现1次
    外键 foreign key 从表中添加外键字段,关联主表中的主键字段
    展开全文
  • 一行或多行中包含违反非空、唯一或外键约束。”的异常信息。原因分析:强类型的DataTable和SQL语句查询出的结果不匹配。 简单说就是强类型的DataTable比SQL语句查询出来的结果集要多一些数据列或这属性不对应。...
  • 今天运行项目,提示“未能启用约束。一行或多行中包含违反非空、唯一或外键约束。”的异常信息。 在网上找了查了一些原因:http://www.cnblogs.com/muzihai1988/archive/2011/05/04/2036502.htm...
  • SQL外键约束

    2020-07-25 14:47:23
    SQL外键约束外键约束添加外键约束删除外键约束 外键约束 一个表中的 FOREIGN KEY(外键) 指向另一个表中的 PRIMARY KEY(主键) FOREIGN KEY 约束用于预防破坏表之间连接的动作 FOREIGN KEY 约束也能防止非法数据...
  • 在写c#项目,修改了数据库中的表的...一行或多行中包含违反非空、唯一或外键约束”,在网上搜了一下,发现还需要修改数据集文件,修改了.xsd文件中的相应字段属性,使其与数据库中的保持一致,就没有异常了
  • 一行或多行中包含违反非空、唯一或外键约束。”的异常信息。 在网上找了查了一些原因:http://www.cnblogs.com/muzihai1988/archive/2011/05/04/2036502.html 原因分析:强类型的DataTable和SQL语句查询出...
  • 小议Oracle外键约束修改行为

    千次阅读 2011-12-27 15:32:29
    小议Oracle外键约束修改行为(一) Oracle的外键用来限制子表中参考的字段的,必须在主表中存在。而且在主表的记录发生变化导致外键参考唯一约束发生了变化时,定义了一系列的动作。 在SQL92标准...
  • MySQL外键约束

    2020-11-23 08:44:11
    1、外键约束 特点: (1)一个表可以有很多个外键约束 (2)外键约束是需要一个表的两个字段或两个表的两个字段之间建立外键约束 (3)外键约束一定是在从表/子表中建立的 (4)在从表中外键约束的列,与在主表中外...
  • 在试着用DataSet强类型来制作Data层,完全交给Dataset的TableAdapter来操作。 但是在使用更新,和自定义的查询方法的时候,一直提示“强类型...一行或多行中包含违反非空、唯一或外键约束”这样一个错误。
  • 查看了源代码,语句,字符串什么的都没有错,数据库里面没有一行或多行中包含违反非空、唯一或外键约束的问题。 之后查资料,原来是我之前修改了一下表里面的类型大小,结果数据集不会再次自动生成 这里有两种...
  • MySQL的外键约束

    2021-05-29 17:59:47
    A表的主键在B表中出现(A表示主表,B表示从表),并且B表中的这个字段的必须已经在A表中出现,这个字段对B表来说就是外键约束外键约束约束的是从表,即从表对外键列的新增和修改都要看主表中这个是否已经存在 ...
  • MYSQL外键约束

    2019-05-02 00:47:00
    外键约束(FOREIGN KEY): A表中的外键列的必须引用于于B表中的某主键列. 为了保证数据的合理性,我们需要建立外键约束关系. 规定: employee表中的deptno列的,应该来源于department表中的主键列deptno, 我们...
  • 1)非空约束:not null ,字段的不能为空。若添加数据时没有指定,会报错。 添加非空约束 方式1:在创建表时添加非空约束 create table bookinfo( book_id int, book_name varchar(20) not null ); 方式...
  • 外键约束补充说明

    2021-04-26 23:04:49
    引用完整性约束(外键约束)可以定义修改编辑(INSERT、DELETE、UPDATE操作)记录规则。 在创建表时(通过 CREATE TABLE 语句),或者在表创建之后(通过 ALTER TABLE 语句)在外键约束中使用{ON DELETE | ON ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,205
精华内容 24,482
关键字:

外键约束修改值