CREATE  TABLE tab1 
(
  Grp_ID INT NOT NULL default(0),
  Sys_ID INT NOT NULL default(0),
  Func_id INT NOT NULL default(0),
  primary key (Grp_ID,Sys_ID,Func_id)
)
CREATE  TABLE tab1 
(
  Grp_ID INT NOT NULL default(0),
  Sys_ID INT NOT NULL default(0),
  Test_Type INT NOT NULL default(1),
  Test_Name char(16) default('0'),
  primary key (Grp_ID,Sys_ID)
)

解决方案 »

  1.   

    CREATE  TABLE tab1 
    (
      Grp_ID INT NOT NULL default(0),
      Sys_ID INT NOT NULL default(0),
      Func_id INT NOT NULL default(0),
      primary key (Grp_ID,Sys_ID,Func_id)
    )
    CREATE  TABLE tab2 
    (
      Grp_ID INT NOT NULL default(0),
      Sys_ID INT NOT NULL default(0),
      Test_Type INT NOT NULL default(1),
      Test_Name char(16) default('0'),
      primary key (Grp_ID,Sys_ID)
    )
      

  2.   

    如果tab2通过Grp_ID,Sys_ID外键于tab1的话:
    CREATE  TABLE tab1 
    (
      Grp_ID INT NOT NULL default(0),
      Sys_ID INT NOT NULL default(0),
      Func_id INT NOT NULL default(0),
      primary key (Grp_ID,Sys_ID,Func_id)
    )
    CREATE  TABLE tab2 
    (
      Grp_ID INT NOT NULL default(0),
      Sys_ID INT NOT NULL default(0),
      Test_Type INT NOT NULL default(1),
      Test_Name char(16) default('0'),
      primary key (Grp_ID,Sys_ID),
      foreign key(Grp_ID) references tab1(Grp_ID),
      foreign key(Sys_ID) references tab1(Sys_ID)
    )
      

  3.   

    上面的
    CREATE  TABLE tab1 
    (
      Grp_ID INTEGER NOT NULL ,  
    )
    是我依照一本书上写的,大家看对不对:
    CREATE  TABLE tab1 
    (
      Grp_ID INTEGER NOT NULL , 
      Sys_ID INTEGER NOT NULL , 
      Func_ID INTEGER NOT NULL , PRIMARY KEY( Grp_ID,Sys_ID,Func_ID))主要是默认值0是不是写成NOT NULL啊???
    2CREATE  TABLE tab2 
    (
      Sys_ID INTEGER NOT NULL , 
      Func_ID INTEGER NOT NULL , 
      Test_Type INTEGER   NULL , 
      Test_Name CHAR(16) NOT NULL,PRIMARY KEY(Sys_ID,Func_ID),
    FOREIGN KEY(Sys_ID,Func_ID) REFERENCE tab1)
    这里的FOREIGN KEY(Sys_ID,Func_ID) REFERENCE tab1对不对啊??
    还有就是这句话的意思,以及我写的所有的标点符号有没有错啊??
    谢了~~~
      

  4.   

    CREATE  TABLE tab1 
    (
      Grp_ID INT default(0) NOT NULL ,  
       sys_ID int default(0) not null,
      Func_ID int default(0) not null,
     primary key(  Grp_ID, Grp_ID,Func_ID)
    )create table tab2
    (sys_id int default(0) not null,
    func_id int default(0) not null,
    test_type int default(1),
    test_name char(16) default('0')
    primary  key(sys_id,func_id))
      

  5.   

    多谢大侠,为什么 
       Test_Type int       1
       Test_Name char(16)  0
    写成: Test_Type INT NOT NULL default(1),
      Test_Name char(16) default('0'),
    就是说Test_Name char(16) default('0'),没有NOT NULL??
      

  6.   

    1.主要是默认值0是不是写成NOT NULL啊???
    不是,是default(0)
    2。这里的FOREIGN KEY(Sys_ID,Func_ID) REFERENCE tab1对不对啊??]
    不对,分开写。
    FOREIGN KEY是列级约束,不能多于一列。
    constraint con_func_id foreign  key(func_id) references tab1(func_id),
    constrint con_sys_id foreign key(sys_id) references tab1(sys_id)
      

  7.   

    CREATE  TABLE tab1 
    (
      Grp_ID INT NOT NULL default(0),
      Sys_ID INT NOT NULL default(0),
      Func_id INT NOT NULL default(0),
      primary key (Sys_ID,Func_id)
    )
    CREATE  TABLE tab2 
    (
      Sys_ID INTEGER NOT NULL , 
      Func_ID INTEGER NOT NULL , 
      Test_Type INTEGER   NULL , 
      Test_Name CHAR(16) NOT NULL,
    PRIMARY KEY(Sys_ID,Func_ID),
      foreign key(Sys_ID,Func_ID) references tab1(Sys_ID,Func_ID)
    )
      

  8.   

    1、
    NOT NULL 只是说不允许为空,和默认值没有关系,默认值必须写default
    2
    如上,外键必需和主键相同
      

  9.   

    sorry!FOREIGN KEY 可以是单列键或多列键
      

  10.   

    疑问:
    字段名    类型    默认值   主键
       Sys_ID    int       0       Y
       Func_ID   int       0       Y 
       Test_Type int       1
       Test_Name char(16)  0
    1、是怎么判断出为空还是不为空的??(即NULL or NOT NULL)
    2、Test_Type INTEGER   NULL , 上面给出的条件有默认值1,怎么没有体现出来??