我用下图创建了一个数据库:
http://imagizer.imageshack.us/v2/800x489q90/440/o1yu.png
TrainerPokemon
表表示一个神奇宝贝(属于一个训练师)的出现,而Pokemon
表表示一个神奇宝贝'精灵'。一个特定的口袋妖怪可能可以访问某些能力,但是这个口袋妖怪的出现可能只带有一个能力(AbilityID
表上的TrainerPokemon
列)。
这是我的问题:我试图创建一个触发器,以防止任何其他能力(与PokemonAbility
表中指定的不同)插入/更新到{{1}中的寄存器表,但我没有成功。
有没有人知道触发器?这个数据库模型的新想法也是受欢迎的。
(重要说明:我使用的是SQL Server 2012)
答案 0 :(得分:0)
像这样的东西(键入我的头顶):
CREATE TRIGGER trg_pok_abil ON TrainerPokemon FOR UPDATE, INSERT
AS
BEGIN
IF EXISTS (
SELECT *
FROM inserted
WHERE inserted.AbilityID NOT (
SELECT AbilityID
FROM PokemonAbility
WHERE PokemonAbility.PokemonID = inserted.PokemonID
)
BEGIN
ROLLBACK
END
END
答案 1 :(得分:0)
你可以在pokemonability,skillid上添加一个两列外键约束pokemonability和traineridkemon。
HTH