es im Doing "erstellen Statement/s" der Tabelle selbst ist Datenbank typspezifisch. Es erfordert auch spezifische DB-Expertise (um knifflige Dinge wie Startup-Zähler, Auto-Inkrement-Wert, Wertsprünge bei parallelen Transaktionen für Effizienz, kümmert sich um Counter während Backup/Restore, Komplexität der Durchführung für einen Teil des Primärschlüssels). Einige Datenbankexperten werden es kugelsicher beantworten.
In der Zwischenzeit, hier ist, wie Sie es in MySQL innerhalb der "insert-Anweisung" selbst tun können (indem Sie es atomar ausführen). Dies könnte auch in einem Trigger/Verfahren funktionieren (basierend auf Ihren Umständen, wie viel Sie Entwickler vor dem versehentlichen Einfügen von Duplikaten schützen möchten). Wenn Sie dies in einer Prozedur tun, können Sie den Entwicklern die Prozedur als Hauptschnittstelle geben (und ihnen den direkten Zugriff auf die Tabelle entziehen).
MySQL 5.6 Schema/Inserts:
create table tt
(
id int, shop varchar(100), user varchar(100)
);
insert into tt values (
ifnull((select max(id) from tt a where a.shop='shop1'),0)+1,
'shop1',
'user1'
);
insert into tt values (
ifnull((select max(id) from tt a where a.shop='shop1'),0)+1,
'shop1',
'user1'
);
Abfrage:
select * from tt
[Ergebnisse]:
| id | shop | user |
|----|-------|-------|
| 1 | shop1 | user1 |
| 2 | shop1 | user1 |
T-SQL ist spezifisch für Sybase/MsSQL. Ich sehe, dass Sie Ihre Frage als MySQL markiert haben. Welche Datenbank verwendest du? – blackpen
Sorry ich möchte versuchen mit MSSQL & MYSQL – gayan1991
Möchten Sie "eine Lösung" für beide Arten von Datenbanken arbeiten? Die Syntax von MsSQL kann sich von der von MySQL unterscheiden. – blackpen