我不知道我在这里失踪了什么:
IF (SELECT 'Nazwa' FROM stanowiska WHERE Nazwa LIKE = 'Lakiernik') IS NULL THEN
INSERT INTO stanowiska (Nazwa) VALUES ('Lakiernik')
ELSE
SELECT Nazwa FROM stanowiska WHERE Nazwa LIKE 'Lakiernik'
任何帮助将不胜感激
答案 0 :(得分:3)
这可能是你想要的:
IF NOT EXISTS (SELECT 1 FROM stanowiska WHERE Nazwa = 'Lakiernik') THEN
INSERT INTO stanowiska (Nazwa)
VALUES ('Lakiernik');
ELSE SELECT Nazwa FROM stanowiska WHERE Nazwa = 'Lakiernik'
END IF;
即使这很奇怪。代码块插入THEN
并返回ELSE
中的值。这似乎不对。并且,返回的部分仅为Lakiernik
,因此我认为不需要ELSE
:
IF NOT EXISTS (SELECT 1 FROM stanowiska WHERE Nazwa = 'Lakiernik') THEN
INSERT INTO stanowiska (Nazwa)
VALUES ('Lakiernik');
END IF;
然而,这有竞争条件。所以,如果你想防止重复,正确的方法是:
create unique index unq_stanowiska_nazwa on stanowiska(nazwa);
然后:
INSERT INTO stanowiska (Nazwa)
VALUES ('Lakiernik')
ON DUPLICATE KEY UPDATE nazwa = VALUES(Nazwa);
答案 1 :(得分:0)
试试这个,还没有测试它:
IF (SELECT 1 FROM stanowiska WHERE Nazwa = 'Lakiernik')
THEN
INSERT INTO stanowiska (Nazwa) VALUES ('Lakiernik');
ELSE
SELECT Nazwa FROM stanowiska WHERE Nazwa ='Lakiernik';
END IF;