比如 字段te int chack(te>10)
而我插入te时是5,然后通过触发器把te改为15,这样就不会违反约束条件不过一般的触发器无法实现这一功能,总是先检查完整性约束,然后触发触发器可不可以把触发器定义在完整性约束检查的前面?

解决方案 »

  1.   

    zz Innodb存储引擎支持FOREIGN KEY和REFERENCES子句。Innodb存储引擎执行ADD [CONSTRAINT [symbol]] FOREIGN KEY (...) REFERENCES ... (...)。请参见15.2.6.4节,“FOREIGN KEY约束”。对于其它存储引擎,这些子句会被分析,但是会被忽略。对于所有的存储引擎,CHECK子句会被分析,但是会被忽略。请参见13.1.5节,“CREATE TABLE语法”。接受这些子句但又忽略子句的原因是为了提高兼容性,以便更容易地从其它SQL服务器中导入代码,并运行应用程序,创建带参考数据的表。请参见1.8.5节,“MySQL与标准SQL的差别”。
    ==============
    注意:CHECK子句会被分析,但是会被忽略。
      

  2.   

    所以说,不知道你从哪儿得来的在MYSQL中
      

  3.   

    如果我就要实现check这样的功能 要怎么弄呢?
      

  4.   

    用触发器实现http://blog.csdn.net/ACMAIN_CHM/archive/2009/07/25/4380183.aspx
      

  5.   

    如果这一情况id int primary key,
    .....正常情况下 insert into (id,..) values (null..)这样肯定会报错它会说主键不能为空
    而我在约束检查之前可否用一个触发器,改变id 如set new.id=10,让这种情况不会报错 可不可以呢?
      

  6.   

    因为没积分不能发帖了 所以只能在这儿蹭楼上的  你会EJB 问你个问题 我的jboss是5.1.0 ,我要动态创建destination 我这样做MBeanServer server = (MBeanServer) MBeanServerFactory.findMBeanServer(null).iterator().next();
    System.out.println(server);
    ObjectName factoryQueue = new ObjectName("jboss.mq", "service", "DestinationManager");
    Object o = server.getObjectInstance(factoryQueue);
    System.out.println(o);
    Method[] ms = o.getClass().getMethods();
    for(Method m:ms){
    System.out.println(m);
    }
    String sQueue = "desgen";
    server.invoke(factoryQueue,"createQueue",new Object[] { sQueue },new String[]{ "java.lang.String" } );
    可我查对象o中没createQueue方法,所以报错了Unable to find operation createQueue(java.lang.String)如果要动态创建destination要怎么做了?