我正在尝试在表guestpasstypes
中插入guestpass类型名称,并且一次使用此语句检查数据库是否已经使用该名称:
@"INSERT INTO guestpasstypes(guestPasstype_Name)values('" + tbPassType.Text + "') where not exists (select 'guestPasstype_Name' from guestpasstypes where guestPasstype_Name = '" + tbPassType.Text + "')"
但它也接受重复的名称,但它不起作用。有人请帮忙吗?
答案 0 :(得分:3)
对于SQL Server,它看起来像这样。
insert into guestpasstypes (guestPasstype_Name)
select 'name1'
where not exists (select *
from guestpasstypes
where guestPasstype_Name = 'name1')
我认为它也适用于MySQL。
如果您使用的是SQL Server 2008,则可以使用MERGE。
merge guestpasstypes as G
using (select 'name2') as S(Name)
on G.guestPasstype_Name = S.Name
when not matched then
insert (guestPasstype_Name) values (Name);
<强>更新强>
我认为第一个选项可以应用于您的问题:
@"INSERT INTO guestpasstypes(guestPasstype_Name) select '" + tbPassType.Text
+ "' where not exists (select * from guestpasstypes where guestPasstype_Name = '"
+ tbPassType.Text + "')"
答案 1 :(得分:1)
如果您希望它抛出错误,您可以:
或
答案 2 :(得分:0)
尝试INSERT IGNORE或INSERT ON DUPLICATE KEY:
INSERT IGNORE INTO `guestpasstypes`(`guestPasstype_Name`) values('" + tbPassType.Text + "');
OR
INSERT INTO `guestpasstypes`(`guestPasstype_Name`)values('" + tbPassType.Text + "') ON DUPLICATE KEY UPDATE `guestPasstype_Name` = `guestPasstype_Name`;