各位朋友好。一直有一个问题不明白,比如一个数据库goods有两个表:
goodsInfo 表的字段如下:
id      主键,自动增长
name    商品名称
type    商品所属分类的ID号
goodsType表的字段如下:
id        主键,商品分类的ID号,和goods表的type对应
typeName  商品分类的名称这两个表是有联系的,由goodsInfo表的type可以在goodsType表中找到这个分类的名称,即goodsInfo表的type字段是其外键我的问题有两个:
1.外键要设定吗?我觉得好像不用吧,它不像主键那样要强制设定吧
2.如果我在表中手动删除goodsType的一项(或者在程序代码中用语句删除一个分类),如何做到在goodsInfo表中也把属于该类的商品删除呢?知道的朋友帮我解答一下啊! :)

解决方案 »

  1.   

    我的问题有两个: 
    1.外键要设定吗?我觉得好像不用吧,它不像主键那样要强制设定吧 
    -- 不是必须定义,可以定义,也可以不定义2.如果我在表中手动删除goodsType的一项(或者在程序代码中用语句删除一个分类),如何做到在goodsInfo表中也把属于该类的商品删除呢?
    -- 可以在删除goodstype记录的时候同事删除goods的记录
      

  2.   

    请问二楼的朋友如何“在删除goodstype记录的时候同事删除goods的记录”?
      

  3.   

    create table goodsType(ID int primary key,typeName nvarchar(50))
    create table goodsInfo(ID int identity primary key, Name nvarchar(50),[type] int not null references goodsType(ID) on delete cascade)
      

  4.   


    -- 写一个存储过程同时删除
    create procedure p_goodstype_delete
    @id int = 0
    as
    set nocount on-- 删除产品
    delete from goodsinfo where typeid = @id
    -- 删除分类
    delete from goodstype where id = @id go