Ich brauche Datensätze in eine Tabelle einzufügen, die wie folgt aussieht:UPDATE oder INSERT in SQL Server mit spezifischen Anforderungen
CREATE TABLE [dbo].[ExamFees]
(
[ExamSeriesID] [int] NOT NULL,
[Region] [varchar](50) NOT NULL,
[Fee] [money] NOT NULL,
[DatetimeEntered] [datetime] NULL
)
jedoch bereits existiert dann DatetimeEntered getDate(), wenn ein Datensatz will ich nur .
Ich denke, ich muss Merge verwenden, aber ich bin mir nicht sicher, wie dies zu tun ist und mir wurde gesagt, dass ich Daten verlieren kann, wenn ich nicht weiß, was ich tue.
Einige Beispieldaten sind:
INSERT INTO ExamFees([ExamSeriesID], [Region], [Fee], [DatetimeEntered]) VALUES(553, 'Low', 10.00, GETDATE())
INSERT INTO ExamFees([ExamSeriesID], [Region], [Fee], [DatetimeEntered]) VALUES(553, 'Lower mid', 20.00, GETDATE())
INSERT INTO ExamFees([ExamSeriesID], [Region], [Fee], [DatetimeEntered]) VALUES(553, 'Upper mid', 30.00, GETDATE())
INSERT INTO ExamFees([ExamSeriesID], [Region], [Fee], [DatetimeEntered]) VALUES(553, 'High', 40.00, GETDATE())
INSERT INTO ExamFees([ExamSeriesID], [Region], [Fee], [DatetimeEntered]) VALUES(401, 'Low', 5.00, GETDATE())
INSERT INTO ExamFees([ExamSeriesID], [Region], [Fee], [DatetimeEntered]) VALUES(401, 'Lower mid', 10.00, GETDATE())
INSERT INTO ExamFees([ExamSeriesID], [Region], [Fee], [DatetimeEntered]) VALUES(401, 'Upper mid', 15.00, GETDATE())
INSERT INTO ExamFees([ExamSeriesID], [Region], [Fee], [DatetimeEntered]) VALUES(401, 'High', 20.00, GETDATE())
Es ist erwähnenswert, dass dies wird auch von einem C# Programm aufgerufen werden.
Die SQL wird in Massen erzeugt und zu einer String, etwa so:
string Region = "Low";
string ExamFeesTableName = "ExamFees";
sb.AppendLine("INSERT INTO " + ExamFeesTableName + "([ExamSeriesID], [Region], [Fee], [DatetimeEntered]) VALUES(" + ExamSeriesID + ", '" + Region + "', " + Fee.ToString("0.00") + ", GETDATE())");
Kann jemand helfen?
Ich vermute, dass Ihre Frage abgelehnt wurde, weil keine Forschungsarbeit gezeigt wurde. Ohne Kommentar werden wir es nie wissen ... Die Dokumentation zu MERGE finden Sie [hier] (https://msdn.microsoft.com/en-GB/library/bb510625.aspx). –
Sie könnten immer zuerst eine Überprüfung durchführen, wenn es existiert (wählen Sie count (1) aus ExamFees wo blablabla) dann updaten sonst einfügen. Nicht die eleganteste Lösung, aber funktioniert und ist immer noch einfach zu lesen und zu pflegen – GuidoG
Ich entschuldige mich dafür, als ob ich das nicht erforscht habe. Ich habe versucht, eine Zusammenführung durchzuführen, wie es auf der Oberfläche scheint, als die effizienteste Art, es zu tun, aber ich habe es nicht verstanden und wollte es nicht riskieren, es falsch zu machen. –