我想将相同的条目插入到2个不同的表(结构上相同)中,条件是其中一个表中的a_text的当前值不存在于该表的任何位置。这是我的第一次尝试
cur.execute('''IF NOT EXISTS (SELECT * FROM checktble WHERE a_text
= %s) ''', (a_text))THEN INSERT INTO tble1 AND INSERT INTO tble2
(a_text,a_fulltext,a_link,a_title,a_source,a_date,a_tag) VALUES (%s,%s,%s,%s,%s,%s,%s)''',
(a_text,a_fulltext,a_link,a_title,a_source,a_date,a_tag))
但有人可以清理并为我解决这个问题吗?
答案 0 :(得分:1)
您可能需要以下内容(伪代码,因为我没有您的表格结构)。
IF NOT EXISTS (SELECT * FROM checktble WHERE a_text = 'yourtexthere')
BEGIN
BEGIN TRANSACTION doubleInsert
INSERT INTO tble1 (a_text,a_fulltext,a_link,a_title,a_source,a_date,a_tag)
VALUES ('blabla', 'more blabla', 'linkgoeshere', 'Bla!', 'Source', 'GETDATE(), 'tag';
INSERT INTO tble2 (a_text,a_fulltext,a_link,a_title,a_source,a_date,a_tag)
VALUES ('blabla', 'more blabla', 'linkgoeshere', 'Bla!', 'Source', 'GETDATE(), 'tag';
COMMIT TRANSACTION doubleInsert
END
答案 1 :(得分:0)
另一个检查checktable并在一个语句中插入两个表t1和t2(因此是事务):
insert into t1 (a_text,a_fulltext,a_link,a_title,a_source,a_date,a_tag)
output inserted.a_text, inserted.a_fulltext, inserted.a_link, inserted.a_title,
inserted.a_source, inserted.a_date, inserted.a_tag
into t2(a_text,a_fulltext,a_link,a_title,a_source,a_date,a_tag
SELECT a_text,a_fulltext,a_link,a_title,a_source,a_date,a_tag
from (values
( 'myvalue for a_text',... a_fulltext,a_link,a_title,a_source,a_date,a_tag
))
as T(a_text,a_fulltext,a_link,a_title,a_source,a_date,a_tag)
where not exists (select 1 from checktable
where checktable.a_text = T.a_text)