我有一个SQL脚本,其中包含用于多个表的表创建脚本。我需要一个脚本(sed)来更新其中一个的外键引用。
是否可以从以下脚本中检测到FOREIGN KEY (MY_KEY_ID) REFERENCES fff(ID) ON DELETE CASCADE ,
。
请注意,它可能不是该特定文本的唯一出现,因此我需要找到在CREATE TABLE MYTABLE
之后出现的那个文本。
CREATE TABLE MYTABLE (
blah
.....
FOREIGN KEY (MY_KEY_ID) REFERENCES fff(ID) ON DELETE CASCADE ,
FOREIGN KEY ....
)
更新:
最终目标是使用bash脚本从一个键中删除ON DELETE CASCADE
并将其添加到下一个键中。
答案 0 :(得分:1)
这将在CREATE TABLE字符串之后找到FOREIGN KEY字符串,但是现在是什么?
$ awk '
index($0,"CREATE TABLE MYTABLE") { f=1 }
f && index($0,"FOREIGN KEY (MY_KEY_ID) REFERENCES fff(ID) ON DELETE CASCADE ,")
' file
FOREIGN KEY (MY_KEY_ID) REFERENCES fff(ID) ON DELETE CASCADE ,